为什么 cron 停止处理命令?

为什么 cron 停止处理命令?

我的 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 现在又开始运行了。

谢谢

相关内容