为什么 crontab 进程有时会自动重复运行

为什么 crontab 进程有时会自动重复运行

有时,我们发现服务器的 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

相关内容