原址如下:
http://blog.itechol.com/space-33-do-blog-id-4945.html
自定义 crontab日志文件位置
crontab是Linux下最常用的计划任务服务。本文跟大家分享一下有关linux crontab日志存放的一些心得,希望本文能教会你更多东西。
默认情况下,crontab中执行的日志写在/var/log下(以CentOS为例进行说明),如:
#ls /var/log/cron*
/var/log/cron /var/log/cron.1 /var/log/cron.2 /var/log/cron.3 /var/log/cron.4
如果日志有问题,可以参考以下做法:
为crontab增加日志
crontab的日志比较简单,当crond执行任务失败时会给用户发一封邮件。恰巧在我们的几台WEB服务器上发现一些问题:
简单环境说明:
公司有WEB1 WEB2 WEB3 三台应用服务器,其中这三台服务器通过rsync实现数据实时同步;WEB1 为rsync客户端,WEB2 WEB3 为rsync服务端,WEB1上定制rsync同步脚本通过cron任务实现定时向WEB2 WEB3同步数据。在使用过程中发现cron任务能正常执行,但是同步数据没有成功;使用手动方式一切正常,为什么??
查看日志发现如下显示:
Jul 20 10:47:01 webmaster crond[3193]: (root) CMD (/root/shell/rsync.sh)
而且crond发邮件也失败了。
如何查看cron任务是否真正执行?
考虑到是否为crontab中的任务增加自己的日志,这样出错后,比较容易看到原因。
于是我做了如下操作:
crontab -e //编辑cron任务,以下为cron任务内容
# rsync aplication from /www
*/1 * * * * /root/shell/rsync.sh >>/root/shell/for_crontab/mycron.log 2>&1
//红色部分为添加的内容
//把错误输出和标准输出都输出到mycron.log中。
通过查看mycron.log就可以清楚的知道cron任务是否执行正确了!!!
以下是我的mycron.log文件中显示的内容
[root@webmaster for_crontab]# head -n 10 mycron.log
rsync: failed to open exclude file rules.txt: No such file or directory (2)
rsync error: error in file IO (code 11) at exclude.c(1000) [client=2.6.8]
从中可以看出是我的rsync脚本中使用exclude排除文件中出了错误。。。
附:rsync脚本内容
#!/bin/sh
# rsync aplication from /www
/usr/bin/rsync -vzrtopg --progress --delete --exclude-from=/root/shell/rules.txt --password-file=/etc/rsync/rsyncd.scrt /www/* webmaster@192.168.1.122::www
/usr/bin/rsync -vzrtopg --progress --delete --exclude-from=/root/shell/rules.txt --password-file=/etc/rsync/rsyncd.scrt /www/* webmaster@192.168.1.123::www
~
红色标识部分为错误根源,因为之前没有指明exclude文件的绝对路径,导致cron任务找不着排除文件,故不能执行脚本文件。