排查/etc/crontab不执行的过程

排查定时任务,/etc/crontab不执行的过程

近期有新项目上线,有用到定任务,个人习惯是添加定时任务到/etc/crontab,但昨天注意到定时任务并未执行,便排查原因。

过程如下:

查看定时任务状态service crond status (centos7 版本systemctl status crond.service)-->active正常

试图重启定时任务service crond restart(centos7 版本systemctl restart crond.service)-->成功,按理在/etc/crontab会一分钟重新读取无需重启

结果:

又试图尝试了网上的其他办法,均失败,只能将定时任务移到 crontab -e下

今天发现由于定时任务移到了root用户的crontab -e下,导致网站程序一些文件权限问题,第一想法是crontab -u www -e把crontab移到www用户下面,无奈,也不执行。

突然看到/var/log/cron,居然忘记查看日志了。

错误如下:

(CRON) ERROR chdir failed (/home/www): No such file or directory 前往home,创建www目录并改目录所有者为www。

chown www:www www

去掉root,www用户下面的定时任务,该写到/etc/crontab。查看定时任务日志,执行成功!

我们知道定时任务可以写到/etc/crontab与crontab -e下面,但你知道两者的区别吗?

语法不同

/etc/crontab
# For details see man 4 crontabs
 
# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
 
 
 
crontab -e
*  *  *  *  *  command
复制代码
使用范围
修改/etc/crontab这种方法只有root用户能用,这种方法更加方便与直接直接给其他用户设置计划任务,而且还可以指定执行shell等等, crontab -e这种所有用户都可以使用,普通用户也只能为自己设置计划任务。然后自动写入/var/spool/cron/usename
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章