如何停止当前正在运行的Cron作业?


45

如何停止当前正在运行的Cron作业?


2
以下三个答案以三种方式解释了这个问题。@GURU,能否请您澄清一下您想做什么?您是否想终止由cron启动的当前正在运行的进程,还是要阻止该作业在将来运行?
jcrawfordor 2011年

Answers:


29

您可以采用与停止任何进程相同的方式进行操作。

要停止当前正在运行的cron作业,可以执行以下操作之一:

pkill process-name

或者,如果您知道PID(可以通过运行确定它ps):

kill 1234

(替换实际的PID)


1
如何列出当前正在运行的cron作业?
UWU_SANDUN

5
@UWU_SANDUN:您可以使用pgrepgrep的输出ps。从运行的流程没有什么特别的cron。您只需使用自己的名称搜索该过程。您也可以这样做,ps fauxww | grep -A 1 '[C]RON'并且线下的线将显示正在运行的作业cron。您可以将数字1调高一些,以查看子流程(如果有)。
丹尼斯·威廉姆森

请注意,您必须以管理员身份运行cygwin才能杀死进程。有关更多信息,请参见此处
takanuva17年

使用Ubuntu,我输入了@ takanuva15建议的内容ps fauxww | grep -A 1 '[C]RON'。这会列出当前正在运行的cron作业,因此此后您可以记下PID并执行# kill -9 PID。谢谢!
russellhoff

@russellhoff:-9仅应将其用作最后的手段,因为它会阻止进程在退出时进行任何清理。
丹尼斯·威廉姆森

17

要停止运行cron作业,请首先使用以下命令获取命令的进程ID

top -p $(pgrep -d',' your_command)

例如:-

top -p $(pgrep -d',' httpd)

并运行

kill PID替换PID为进程ID


14

奇怪,没有人提到这种方法:

$ crontab -e

在打开的编辑器中,删除要停止的任务的行或插入#符号,保存并退出

例如

之前

* * * * * some_script1
* * * * * some_script2

* * * * * some_script1
#* * * * * some_script2

要么

* * * * * some_script1

更改后重新启动服务

sudo service cron reload

16
这不会停止当前正在运行的cron作业,而是会停止将来将由cron启动的cron作业。
伊万

10

如果您使用的是Redhat(RHEL)/ Fedora Core / Cent OS Linux,请使用以下命令:

/etc/init.d/crond stop

如果您使用的是Debian或Ubuntu Linux,则以下命令:

/etc/init.d/cron stop

PS:您应该扎根做这些事情


2
我认为它可以停止所有的任务。要停止特定的任务,我可以知道命令吗?

您能建议任何命令吗

我认为不可能直接实现。也许我们应该去找黑客。
森,


3

您可以编辑cron表并注释掉有问题的任务。切换到控制任务的用户,将您选择的编辑器导出到环境中,然后使用crontab -l

$ su - root
...
# EDITOR=vi; export EDITOR
# crontab -l

1
那列出了crontab。使用crontab -e进行编辑。对于具有此功能的系统,最好使用sudo代替su。同样,crontab -e它将对用户(或根)crontab起作用,但不适用于系统crontab(例如/etc/cron*)。
丹尼斯·威廉姆森,

1

crontab -r

将会删除所有正在运行的crontab,或者您只需在crontab中注释需要停止的命令即可。


0

首先使用此命令检查工作过程。

ps -o pid,sess,cmd afx | egrep "( |/)cron( -f)?$"

该命令的输出是

599  599 cron
4288  599 \_ CRON

现在用这个命令杀死进程

pkill -s 4288

0

在Linux下为我工作

pkill -9 crontab

杀死所有进程名称为crontab的进程

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.