crontab 不运行 /etc/crontab 中列出的命令

crontab 不运行 /etc/crontab 中列出的命令

所以我有一些nfexpirecrontab 应该运行的命令列在/etc/crontab.它们已经工作良好一段时间了,但最近它们完全停止运行了。所有其他作业都会运行,但/etc/crontab.我已经通过 exectuing 检查 crontab 守护进程是否正在运行systemctl status crond

我已经检查/var/log/cron/var/log/messages运行journalctl以查找任何错误,但没有发现任何内容。

我已确保命令可以通过终端执行,因此问题出在 crontab 中的某个地方。

文件/etc/crontab

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# 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
  
30 03 01 * * nfexpire -e "something"
30 03 01 * * nfexpire -e "something"
30 03 01 * * nfexpire -e "something"
30 03 01 * * nfexpire -e "something"
30 03 01 * * nfexpire -e "something"
30 03 01 * * nfexpire -e "something"

哦,我已经确保末尾有一个换行符。

也许权限有问题?

-rw-r--r--. 1 root root 891 Feb  6  2020 /etc/crontab

然而,它在这些设置下运行了几个月,没有出现任何问题,所以我不知道是否应该更改其中的任何内容。

附加信息

系统:Centos 7

内核:3.10.0-1160.el7.x86_64

答案1

这是语法问题。在此文件中,您应该添加附加字段,用户名

30 03 01 * * username nfexpire -e "something"

然后,cron 作业将作为 运行username

其他注意事项。

  • 是否所有工作都开始同时地?不太好。在这种情况下,最好制作一个脚本来运行所有这些并且只有一个作业。
  • 最好根本不要编辑 /etc/crontab。对于 root 拥有的作业,使用 drop-directories/etc/cron.d和其他/etc/cron.*(将可执行脚本放在那里),这些作业的开始时间不是很重要,唯一重要的是作业的周期(每天、每周等)。使用专用用户 crontab 来执行用户运行的作业:crontab -e -u username.您可以省略“用户名”字段,因为该作业将在该特定 crontab 所属的任何人下运行。无论如何,这样系统更新就不会干扰您的 crontab 条目。
  • 考虑使用systemd定时器。

答案2

您的 /etc/crontab 文件需要root位于每个命令的前面。

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# 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
  
30 03 01 * * root nfexpire -e "something"
30 03 01 * * root nfexpire -e "something"
30 03 01 * * root nfexpire -e "something"
30 03 01 * * root nfexpire -e "something"
30 03 01 * * root nfexpire -e "something"
30 03 01 * * root nfexpire -e "something"

相关内容