> CentOS > CentOS运维 >

CentOS下crontab 配置、日志使用记录

公司服务器的系统为CentOS 6.4,经常需要使用Crontab命令去执行一系列的应用脚本,也经常遇到种种的问题,现将自己在使用Crontab命令过程中遇到的一些问题汇总如下,以备后用。 
格式说明 
对于crontab命令的格式,借用网络上一张超牛的图片来说明吧: 

查看日志的方法 
当crontab命令未如预期计划执行的时候,linux下可以通过查看crontab日志回查任务hang住的具体原因,具体查看方法是查看文件/var/log/cron。

问题汇总 
下面是自己在配置crontab的过程中遇到的一些问题,现记录如下: 
1.问题描述: 
写了一个脚本添加至crontab定时任务执行,测试的时候,使用手工运行shell命令执行成功,但是crontab定时任务却并没有执行; 
解决方案: 
这种问题是由于crontab执行是分用户执行的,环境变量的导入会有问题,一般都需要对脚本的路径及输出日志的路径写成绝对路径,同时,在shell脚本中,增加配置文件source ~/.bash_profile,导入环境变量。

2.问题描述: 
crontab 执行脚本需要将shell脚本的输出重定向至日志文件,日志文件的命名方式为日期.log,如20150101.log。 
可以将crontab任务编写如下:

test.sh>>./`date -d last-day +%Y%m%d`.log >&1

3.问题描述:  编写了一个脚本test.sh,手工执行脚本 test.sh>>./date -d last-day +%Y%m%d.log >&1 运行没有问题,日志也按照日期格式生成了。但是把这个任务加入crontab以后,任务却没有正确执行;

* * * * * /app/test/dustbin/HY/test.sh>>/app/test/dustbin/HY/`date -d last-day +%Y%m%d`.log >&1 

查看了crontab的日志,发现crontab任务下,shell的目录路径不完整了:  Dec 9 11:26:01 host_name CROND[8066]: (test) CMD (/app/test/dustbin/HY/test.sh>>/app/test/dustbin/HY/`date -d last-day +)  解决方案:  需要对上述脚本进行一次转义的修改,修改后如下:

* * * * * /app/test/dustbin/HY/test.sh>>/app/test/dustbin/HY/`date -d last-day +\%Y\%m\%d`.log >&1 

修改后,crontab任务执行顺利完成。

 

(责任编辑:IT)