【问题标题】:Restarting cron after changing crontab file? [closed]更改 crontab 文件后重新启动 cron? [关闭]
【发布时间】:2012-04-28 22:38:47
【问题描述】:

更改 crontable 文件后是否必须重新启动 cron?

【问题讨论】:

  • 不要忽视@leonbloy 的回答,但我发现实施我的linux 的第一个cron 作业(每分钟格式正确的作业)直到系统重新启动才起作用。 sudo service cron restart 未经测试。
  • @geotheory 哎呀我当然希望我在更新我的 crontab 时不必重新启动我的产品服务器(我不需要)。

标签: linux unix cron cron-task


【解决方案1】:

没有。

来自cron man page

...cron 然后将检查所有 crontab 上的修改时间 并重新加载那些已经改变的。因此 cron 不需要重新启动 每当修改 crontab 文件时

但如果你只是想确保它已经完成,

sudo service cron reload

/etc/init.d/cron reload

【讨论】:

  • 如果使用 cron.d 文件夹,将不会重新加载符号链接的 crontab。如何强制重新加载?
  • 啊,就是这么简单。现在是sudo service cron restart
  • 更好的选择是重新加载 - 它可以由非 root 用户启动:/etc/init.d/cron reload
  • @CMCDragonkai 可能是crond 而不是cron
  • 这个答案的唯一问题是它并不总是正确的。请参阅问题下方的地球理论评论。我也被这个咬了。我通过sudo crontab -e 对crontab 文件进行了更改,通过Ctrl + X 保存了更改,然后假设cron 会选择它(因为这个答案被高度赞成)。然后,几天后,我的客户报告说 cron 仍在旧周期上运行。所以 - 老实说 - 如果你想安全 - 只需重新启动 cron 或系统,不要浪费时间进行测试,尽管有这个高度支持的答案,你还是必须这样做。
【解决方案2】:

在带有 cPanel sudo /etc/init.d/crond reload 的 CentOS 上可以解决问题。

在 CentOS7 上:sudo systemctl start crond.service

【讨论】:

  • 感谢 CentOs 7 行
  • // ,要重新加载crond,而不是在越来越可怕的systemd上启动它,运行sudo systemctl reload crond.service
  • @NathanBasanese 在 SystemD 上重新加载 cron 现在被认为是黑魔法:sudo systemctl reload crond 失败并出现 Failed to reload cron.service: Job type reload is not applicable for unit cron.service. (Ubuntu 18.04)。阅读:头,我们都被综合症所困扰:“SystemD,只能有一个”。如果重新加载不是在幕后自动完成,你就完蛋了!甚至不要考虑修复它,就像过去 3 年(或更长时间)所做的那样!阅读:Windows 世界终于吞噬了 Debian:如果引擎盖下有什么奇怪的东西,你会怎么做?重启!
  • 重启不仅仅是重新加载。 Centos 没有可用的干净重新加载选项吗?
  • @Tino 你可以安装 cronie
【解决方案3】:

试试这个:sudo cron reload 它适用于 ubuntu 12.10

【讨论】:

  • 不适用于我的 Raspberry Pi 3+ 和 Ubuntu 18.04.2 LTS
【解决方案4】:

根据发行版,使用“cron reload”可能什么都不做。从 init.d/cron 中粘贴一个 sn-p(debian 压缩):

reload|force-reload) log_daemon_msg "Reloading configuration files for periodic command scheduler" "cron"
    # cron reloads automatically
    log_end_msg 0
    ;;

一些开发人员/维护人员依赖它重新加载,但没有,在这种情况下,没有办法强制重新加载。我正在生成我的 crontab 文件作为部署的一部分,除非文件的长度以某种方式发生更改,否则不会重新加载更改。

【讨论】:

    【解决方案5】:

    我在 16.04 VPS Digital Ocean 上遇到了类似的问题。如果要更改 crontab,请确保运行

    sudo service cron restart 
    

    【讨论】:

    • 我只看到reload 就足够了。不需要restart。谢谢。 :)
    • 在我的情况下,PI 为零的 Rasperian 和 /var/spool/cron/crontabs/root 的变化我不得不使用 restart
    • 在旧的 openSUSE 10 机器上遇到了与 @mikep 相同的问题。只有restart 有效。
    【解决方案6】:

    在 centos 7 上试试这个:service crond reload

    【讨论】:

    • systemctl reload crond
    【解决方案7】:

    试试这个:service crond restart,因此它是 crond 而不是 cron

    【讨论】:

    • crond 无法识别的服务。它适用于我的cron。我的操作系统是 Ubuntu 18.04
    【解决方案8】:

    在某些情况下,需要重新启动 cron 才能使启动脚本正常工作。重新启动 cron 没有任何问题。

    sudo service cron restart

    【讨论】:

      【解决方案9】:

      1) 如果文件 /var/spool/cron/crontabs/root 通过 SFTP 客户端编辑 - 需要 service cron restart。 重新加载服务不起作用。

      2) 如果通过控制台 linux (nano, mc) 编辑文件 /var/spool/cron/crontabs/root - 不需要重新启动。

      3) 如果通过crontab -e 编辑 cron - 不需要重新启动。

      【讨论】:

        【解决方案10】:

        Ubuntu 18.04 * 用法:/etc/init.d/cron {start|stop|status|restart|reload|force-reload}

        【讨论】:

          【解决方案11】:

          在 CentOS(我的版本是 6.5)上编辑 crontab 时,您必须关闭编辑器以反映您在 CRON 中的更改。

          crontab -e
          

          在该命令之后,您可以看到 /var/log/cron 中出现了新条目

          Sep 24 10:44:26 ***** crontab[17216]: (*****) BEGIN EDIT (*****)
          

          但仅在进行一些更改后保存 crontab 编辑器是行不通的。您必须离开编辑器以反映 cron 中的更改。退出后新条目出现在日志中:

          Sep 24 10:47:58 ***** crontab[17216]: (*****) END EDIT (*****)
          

          从此时起,您所做的更改对 CRON 可见。

          【讨论】:

            【解决方案12】:

            RHEL/Fedora/CentOS/Scientific Linux 用户的命令

            1. 启动 cron 服务

              • 要启动 cron 服务,请使用:/etc/init.d/crond start

              • 或 RHEL/CentOS 5.x/6.x 用户:service crond start

              • 或 RHEL/Centos Linux 7.x 用户:systemctl start crond.service

            2. 停止 cron 服务

              • 要停止 cron 服务,请使用:/etc/init.d/crond stop

              • 或 RHEL/CentOS 5.x/6.x 用户:service crond stop

              • 或 RHEL/Centos Linux 7.x 用户:systemctl stop crond.service

            3. 重启cron服务

              • 要重新启动 cron 服务,请使用:/etc/init.d/crond restart

              • 或 RHEL/CentOS 5.x/6.x 用户:service crond restart

              • 或 RHEL/Centos Linux 7.x 用户:systemctl restart crond.service

            基于 Ubuntu/Mint/Debian 的 Linux 发行版的命令

            1. Debian 启动 cron 服务

              • 要启动 cron 服务,请使用:/etc/init.d/cron start

              • sudo /etc/init.d/cron start

              • sudo service cron start

            2. Debian 停止 cron 服务

              • 要停止 cron 服务,请使用:/etc/init.d/cron stop

              • sudo /etc/init.d/cron stop

              • sudo service cron stop

            3. Debian 重启 cron 服务

              • 要重新启动 cron 服务,请使用:/etc/init.d/cron restart

              • sudo /etc/init.d/cron restart

              • sudo service cron restart

            来源:https://www.cyberciti.biz/faq/howto-linux-unix-start-restart-cron/

            【讨论】:

            猜你喜欢
            • 2012-10-03
            • 2018-01-30
            • 2020-08-21
            • 1970-01-01
            • 1970-01-01
            • 2021-12-18
            • 2020-06-15
            相关资源
            最近更新 更多