我在 crontab 中创建了一个条目,以用户 A 的身份在午夜执行一项作业。
早上发现脚本没有任何结果,查看了一下/var/cron/log
,发现在那一个小时(同一时间)只执行了一个root用户的脚本。
问题:a) 我们可以在 cron 中设置多个作业以同时执行吗?
b) 如果不行?这是否意味着用户 root cron 优先于任何其他用户执行 cron 作业?
它们看起来是这样的。
root$ crontab -l
05 00 10 * * /opt/sdf/sbin/somescriptA.sh> /dev/null 2>&1 #Test
userA$ crontab -l
05 00 10 * * /opt/sdf/sbin/somescriptB.sh> /dev/null 2>&1 #Test
答案1
Cron 可以同时运行多个脚本。事实上,在 Debian 中,有整个目录的 cron 脚本(即 /etc/cron.daily /etc/cron.hourly)会同时执行。
如果脚本在其他时间正确执行,你为什么不尝试改变 root cron 任务的时间确定问题是否出在实际时间上,或者脚本之间是否存在冲突。
我也同意关闭到 /dev/null 的重定向直到一切正常为止。
答案2
您发布的 crontab 设置为仅在每月 10 日 00:05 运行,这是您想要的吗?
请检查 /opt 中的脚本是否具有可执行权限,以及是否正确调用 sh。您可以通过在控制台中运行脚本来尝试此操作(使用其完整路径,不要在命令前面加上“sh”)
尝试检查目录 /var/spool/cron/ 中的您的用户名,cron 文件应该在那里(某处 - 我现在无法访问系统)。
答案3
我会将 /dev/null 重定向从作业中移除,并让 cron 通过电子邮件将文件的输出发送给您。可能是脚本有问题(可能假设通过 cron 运行时不存在环境变量)。
答案4
我怀疑这两个脚本之间存在某种交互,就像锁定文件或打开文件一样。