![为什么 cron 停止处理命令?](https://linux22.com/image/9689/%E4%B8%BA%E4%BB%80%E4%B9%88%20cron%20%E5%81%9C%E6%AD%A2%E5%A4%84%E7%90%86%E5%91%BD%E4%BB%A4%EF%BC%9F%20.png)
我的 Solaris 11 cron 似乎已停止工作。
这是我运行的 cron 作业的最后输出:
-rw-r--r-- 1 root root 60 Jul 2 20:30 locked_passwords.txt
我设置了一个测试,如下所示:
* * * * * touch /tmp/testing.txt
它永远不会触及文件
我检查了服务是否正在运行:
svcs cron
STATE STIME FMRI
online Mar_09 svc:/system/cron:default
我把文件捆起来,看到了这个:
root 532 1 0 Mar 09 ? 3:08 /usr/sbin/cron
pfexec truss -f -p 532
532: pollsys(0xFC7FC1A8, 1, 0xFC7FC750, 0x00030414) (sleeping...)
我的 cron 进程正在休眠吗?为什么?
更新:我已重新启动 cron 两次,但它继续停止。我的日志的大部分内容是:
! c queue max run limit reached Mon Jul 24 12:53:00 2017
! rescheduling a cron job Mon Jul 24 12:53:00 2017
! c queue max run limit reached Mon Jul 24 12:53:00 2017
! rescheduling a cron job Mon Jul 24 12:53:00 2017
! c queue max run limit reached Mon Jul 24 12:53:00 2017
! rescheduling a cron job Mon Jul 24 12:53:00 2017
我该如何诊断这种情况?
答案1
你检查过/var/cron/log吗?也许该帐户已被锁定或添加到 cron.deny 中?
/var/spool/cron/crontabs 中有对应的.au 文件吗?从历史上看,作业的运行需要该文件。由于它是由 创建的crontab -e
,因此通常只有在将 cron 文件复制到新服务器时才会丢失。被调用的脚本/二进制文件可能存在问题?
cron 守护进程在等待工作时通常处于睡眠状态。
如果您使用的是 v11.3,您还可以考虑使用预定服务如果它对您的需求更有用?
答案2
解决了!!!
/var/cron/log 没有解决我的问题,但它确实为我指明了正确的方向。在日志中我看到了很多
! c 队列最大运行限制已达到 2010 年 5 月 27 日星期四 15:45:01 [[ 队列“c”用于 cron]]
/etc/cron.d/queuedefs 与我所有其他服务器相同,所以这不是问题。
这就是我所做的。
ps -ef | grep cron ptree <PID> pgrep -f '/export/script.sh' # verify the listing before proceeding pkill -9 -f '/export/script.sh' ** Now cron is running again **
我看到数百个 script.sh 堆积起来。
script.sh 连接到数据库,我现在正在对该脚本所做的更改进行故障排除。然而,cron 现在又开始运行了。
谢谢