列出当前正在运行的 cron 选项卡并停止它

列出当前正在运行的 cron 选项卡并停止它

我创建了一个 cronjob,它运行了很长时间,但现在不知道如何停止它。

答案1

遗憾的是,在谷歌结果中列出的这个页面和其他页面中,关于如何处理挂起的 cron 作业,却没有人提到 pstree。

pstree

查看树的 cron 部分

答案2

我认为如果有一个 shell 脚本包装器,如果它运行了足够长的时间,那么它应该会使 cronjob 超时。当调用 cronjob 期间发生超时时,包装器应发送 SIGHUP 或 SIGALARM。像这样的东西:

50 * * * * /usr/bin/my_cron_wrapper_timeout -t 1 /usr/bin/my_command_cron_job_to_run

这个 cron_wrapper_timeout 基本上应该在 -t 开关选项 1 小时过去后发送超时信号,然后应该kill -HUP向 cronjob 发送信号,然后确保也收获该进程,然后结束/终止自身。

或者,应该在 cronjob 本身中编写代码来处理 ALARM 信号超时,并确保它在轻轻消失之前清理干净。

编辑

这正是我所指的:看门狗http://chihungchan.blogspot.com/2011/03/no-more-hanging-jobs-in-cron.html

答案3

您应该停止 crontab 开始运行的进程。

#kill -HUP PID (PID: Process ID is the process running)

要查看 PID 与正在运行的进程(以及更多信息)的关系,请使用top命令更改列顺序<,然后使用>

还可以尝试ps -ax|grep [your_process_file]列出按您选择的名称过滤的正在运行的进程

-HUP= 挂断

答案4

首先使用该命令检查工作进程。

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

该命令的输出是

599  599 cron
4288  599 \_ CRON

现在用这个命令杀死进程

pkill -s 4288

相关内容