我创建了一个 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