原文地址:
排查/etc/crontab不执行的过程 blog.13sai.com
近期有新项目上线,有用到定任务,个人习惯是添加定时任务到/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移到www用户下面,无奈,也不执行。
突然看到/var/log/cron,居然忘记查看日志了。
错误如下:
(CRON) ERROR chdir failed (/home/www): No such file or directory
前往home,创建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
2. 使用范围
修改/etc/crontab这种方法只有root用户能用,这种方法更加方便与直接直接给其他用户设置计划任务,而且还可以指定执行shell等等,
crontab -e这种所有用户都可以使用,普通用户也只能为自己设置计划任务。然后自动写入/var/spool/cron/usename