【问题标题】:Seems Cron job working even after Stopped似乎 Cron 工作即使在停止后也能正常工作
【发布时间】:2014-08-12 07:43:53
【问题描述】:

我的一个 cronjobs 每天发送一封电子邮件

35 6 * * * cd $EZPUBLISHROOT && $PHP runcronjobs.php -q 2>&1

我使用

停止了 cron
sudo service cron stop

当我检查 cron 状态时

 sudo service cron status

cron stop/waiting

问题是我昨天停止了我的crons,但今天又发送了电子邮件

我做错了吗

1.how to stop all cron jobs properly 
2.how to view last ran cronjob list .

我试图通过

获取上次运行的 cronob 详细信息
grep cron /var/log/syslog

但它是空的,但是当我转到syslog 文件时,我可以在某些地方看到CRON 这个词。

Aug 12 09:10:01 64177 CRON[6388]: (root) CMD (cd /var/www && /usr/bin/php runcronjobs.p......

当我尝试打字时

ps -ax|grep cron

 5696 pts/3    S+     0:00 grep --color=auto cron
13011 ?        Ss     0:00 cron l

在我停止 cron 作业后可以运行 crons 吗??

提前感谢

【问题讨论】:

  • 只需注释掉 cronjob 即可停止它。 # 0 0 0 0 ...
  • @l'L'l 所以你说 sudo service cron stop is not working :-o
  • 我从来没有像你尝试过的那样使用它——我总是使用crontab
  • 好的,非常感谢

标签: php linux cron crontab


【解决方案1】:

正确的做法是将每个作业或每组作业放在自己的“命名空间”/文件中:

/etc/cron.d/production-job-mail-on-delivery
/etc/cron.d/production-aggregate-account-data
/etc/cron.d/devel-job-mail-on-delivery
/etc/cron.d/system-cleanup-sundy
/etc/cron.d/common-mailings

当您想停止时,只需将这些文件移出 /etc/cron.d/ 文件夹即可。

您不应该停止 cron 服务,也不应该在更大的系统上使用 crontab / /etc/crontab

为什么?

例如,我在一个系统上有 200 个 cronjobs。 /etc/crontab 文件变得非常混乱。例如,有些作业需要停止一周,有些则需要永久运行。使用cron.d 文件夹这是一项非常简单的任务。

【讨论】:

  • ...想想你努力工作才得到那份工作...!我看到这是 4 年前写的,所以我希望你已经为此找到了一个优雅的方案,或者已经完全委托了它。通常我认为最好的方法是 SEP——让它成为别人的问题。无论如何,为视觉点赞。我的已经不仅仅是一页了,我不喜欢当它们都运行时我无法想象。
【解决方案2】:

通常你会通过以下方式访问你的 crontab:

crontab -l (lists cronjobs)

编辑:

crontab -e

要暂时停止 cronjob,您通常只需注释掉第一个数字:

# 35 6 * * * cd $EZPUBLISHROOT && $PHP runcronjobs.php -q 2>&1

要不再永久运行 cronjob,只需删除特定的作业。 crontab 通常会在您编辑后自动重新启动。如果不尝试使用:

sudo restart cron

更多信息:http://man7.org/linux/man-pages/man1/crontab.1.html

【讨论】:

    【解决方案3】:

    简单的方法是通过 crontab -e 评论 cronjob:

    #35 6 * * * cd $EZPUBLISHROOT && $PHP runcronjobs.php -q 2>&1
    

    除此之外,您应该配置 cronjob 运行频率的时间。

    要停止进程,您可以

    ps|aux grep runcronjobs
    

    在你得到一个正在运行的进程列表后,你可以使用它的编号杀死一个进程

    kill *number
    

    【讨论】:

      猜你喜欢
      • 2021-12-30
      • 2011-08-28
      • 1970-01-01
      • 1970-01-01
      • 2017-12-15
      • 1970-01-01
      • 2011-05-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多