我通过 cron 启动了一个脚本,它运行良好。但是当我尝试通过 cron 结束该脚本时(killall
/ pkill
/pgrep
都可以),什么也没发生。
如果我让 cron 尝试终止它或我自己尝试终止它,则没有什么区别。停止它的唯一方法似乎是htop
按 F9(sigterm)。
那么,如何结尾cron 启动脚本?
我的脚本以 开始#!bin/bash
,并且 cron 以 启动它./path/script.sh
。
有任何想法吗 ?
答案1
无论如何都应该通过它的 pid 来杀死它:
- 运行
ps -ef
(或者ps -efww
如果行太长而无法读完) - 找到脚本名称,你将得到它的 pid
用以下方法杀死它:
kill <pid>
(请注意:不是
pkill
,而是用作pkill <application>
,不是作为pkill <pid>
)
笔记:
使用命令:
ps -ef | grep testscript
将列出两个进程;一个是您要查找的进程,另一个是搜索过程本身你正在运行,例如:
jacob 4183 3647 0 11:22 pts/10 00:00:00 python3 /home/jacob/Bureaublad/testscript.py
jacob 4202 4189 0 11:22 pts/25 00:00:00 grep --color=auto testscript
这意味着你必须使用例如:
ps -ef | grep <scriptname> | grep -v grep
> jacob 4183 3647 0 11:22 pts/10 00:00:00 python3 /home/jacob/Bureaublad/testscript.py
仅查找您需要的行。
与该pgrep
命令不同,该命令会将自身从列表中过滤掉,正如所指出的那样这里: :
pgrep -f testscript
> 4183
这意味着,pgrep -f <scrptname>
出于多种原因,使用@muru 所建议的方法是一种更好的方法。