如何在不重启的情况下启动 cron 作业?

Mar*_*ert 11 cron

我使用 cron 作业offlineimap每 2 分钟调用一次:

*/2 * * * * /usr/bin/offlineimap > ~/Maildir/offlineimap.log 2>&1
Run Code Online (Sandbox Code Playgroud)

我需要终止 cron 作业来解决问题。我怎样才能重新启动 cron 作业(无需重新启动)?我在网上找到了这个“解决方案”:

mylogin@myhost:~$ sudo /etc/init.d/cron restart
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service cron restart

Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the stop(8) and then start(8) utilities,
e.g. stop cron ; start cron. The restart(8) utility is also available.
cron stop/waiting
cron start/running, process 26958
Run Code Online (Sandbox Code Playgroud)

但是,使用ps -ef | grep ...,我没有看到工作......有什么问题?

slm*_*slm 12

Cron 方法

如果您有 sudo 权限,您可以停止/启动 cron 服务。我相信这就是您在网上找到的解决方案所解释的。

根据您使用的 Linux 发行版,您可以执行以下命令:

# redhat distros
$ sudo /etc/init.d/crond stop
... do your work ...
$ sudo /etc/init.d/crond start
Run Code Online (Sandbox Code Playgroud)

或者执行以下命令:

# Debian/Ubuntu distros
$ sudo service cron stop
... do your work ...
$ sudo service cron start
Run Code Online (Sandbox Code Playgroud)

锁定文件类型方法

您还可以在 /tmp 目录中放置一个“dontrunofflineimap”文件,当您希望 offlineimap 任务暂停并且不运行一点时。

这个过程会像这样工作。您可以像这样触摸 /tmp 中的文件:

touch /tmp/dontrunofflineimap
Run Code Online (Sandbox Code Playgroud)

cron 作业将被修改如下:

*/2 * * * * [ -f /tmp/dontrunofflineimap ] || /usr/bin/offlineimap > ~/Maildir/offlineimap.log 2>&1
Run Code Online (Sandbox Code Playgroud)

虽然该文件存在,但它实际上会阻止offlineimap应用程序运行。当您希望它恢复时,只需删除该/tmp/dontrunofflineimap文件即可。