有时,我们发现服务器的 cron 进程会自动重复,重复 2 到 3 次
当使用 ps 命令时,我得到这个:
server_xx14:~ # ps aux | grep cron
root 2596 0.0 0.0 11188 392 ? Ss 2009 0:25 /usr/sbin/cron
root 21706 0.0 0.0 20812 944 ? S 09:30 0:00 /usr/sbin/cron
root 23437 0.0 0.0 20812 944 ? S 09:40 0:00 /usr/sbin/cron
我只想运行一个 cron,如何解决这个问题?谢谢!
答案1
如果 cron 中有一些长时间运行和/或失败(永不完成)的脚本,它们将导致多个 cron 进程出现在进程列表中。
要了解发生了什么,请尝试pstree -ap
以格式良好的方式查看 cron 内容,如下所示:
├─cron─┬─13*[cron───sh───longrunningscript_───php]
│ └─cron───sh───longrunningscript_───php
这意味着 cron 启动了一个新的 shell 脚本,该脚本启动 PHP,运行时间较长。如果您的系统中未安装 pstree,ps -auxwwwf
则会创建类似的视图。
如果 cron 的行为有任何不同,单个长时间运行的 cron 作业可能会无限期地拖延所有其他要在 cron 中运行的脚本。而这正是您不想要的。
答案2
你运行的是什么操作系统?你肯定应该只运行 1 个 cron 实例。尝试运行:
# /etc/init.d/crond stop
# /etc/init.d/crond start
或者您的操作系统用来启动 cron 的任何init.d
脚本。如果这不起作用,您可以运行命令stop
,然后kill
运行其余的 cron 进程,然后运行start
。