背景
之前一直运行正常的 crontab 程序有问题,看程序的日志,在某一天停止了。直接在命令行运行,又是正常的,于是开始了找 bug。
查看运行状态
既然命令行可以直接运行,首先想到的就是 crontab 是不是停止了。
service crond status
crontab 运行正常,那么接下来看运行日志。
运行日志
日志文件位置一般在 /var/spool/cron/ 目录下,这个日志显示的是 crontab 的命令执行日志,并不包括具体的执行情况。
类似这样:
Sep 22 04:22:01 localhost crond[32556]: (root) CMD (run-parts /etc/cron.weekly)
Sep 22 04:22:01 localhost anacron[32560]: Updated timestamp for job `cron.weekly' to 2013-09-22
Sep 22 05:01:01 localhost crond[22768]: (root) CMD (run-parts /etc/cron.hourly)
Sep 22 06:01:01 localhost crond[25522]: (root) CMD (run-parts /etc/cron.hourly)
Sep 22 07:01:01 localhost crond[28255]: (root) CMD (run-parts /etc/cron.hourly)
Sep 22 08:01:01 localhost crond[30982]: (root) CMD (run-parts /etc/cron.hourly)
运行详情日志
我遇到的情况就是 crontab 命令其实运行了,有记录,但是没有执行成功,接下来可以配置运行详情日志,这样会把命令执行结果保存下来,更加方便查找失败的原因。
0 6 * * * /root/script/ss.sh >> /root/for_crontab/mylog.log
这样即使命令执行失败,也会记录相应的返回信息,方便查找错误原因,达到类似于命令行交互的效果。
我配置了之后,查看日志,返回的内容是:
sudo: sorry, you must have a tty to run sudo
到这里找到了错误,Google 了一下发现这是一个很常见的错误。在这里找到了错误的详情,于是很快的找到了解决方法。如果不进行这一步的配置,就没有命令执行的返回内容,就很难快速的定位问题。
sudo: sorry, you must have a tty to run sudo运行脚本日志
还可以加上更加详细的脚本运行记录,把关键的节点数据保存到日志,可以更加方便调试。
引用
http://www.cnblogs.com/doseoer/p/5663187.html
http://blog.csdn.net/hittata/article/details/7713072
网友评论