转 -- 自定义 crontab日志文件位置

时间:2022-06-03 08:01:27

原址如下:

http://blog.itechol.com/space-33-do-blog-id-4945.html

 

自定义 crontab日志文件位置

转 -- 自定义 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任务找不着排除文件,故不能执行脚本文件。