所以我有一个二进制文件(binApp)要被杀死
killall -9 binApp
现在,我没有使用该二进制文件,而是创建了另一个 python 脚本 (pyBinapp.py) 来执行相同的任务。我想杀死那个 python 任务,这会工作吗:
killall -9 pyBinApp
?
另外,-9是什么意思?我找不到任何关于这个号码的文章。
killall
仅匹配进程名称(在您的情况下为“python”),因此它看不到脚本名称(“pyBinApp.py”),因为它是 python 进程参数之一。
但是pgrep
可以匹配带有-f
标志的完整参数列表,包括脚本文件名。
如果你正在运行python pyBinApp.py
,试试这个来杀死它:
kill `pgrep -f pyBinApp.py`
pgrep
返回与模式匹配的所有 PID,然后kill
在所有这些 PID 上执行。
-9 是要发送的信号(而不是默认的 SIGTERM) - SIGKILL。应用程序可以忽略 SIGTERM,而 SIGKILL 则不能。
我不认为在这种情况下使用 killall 是安全的,因为你必须'killall python' 这可能会杀死其他正在运行的东西。'ps辅助| grep python' 查看正在运行的内容。
编辑:实际上 - 我只是测试了它,只要你直接运行 pyBinapp.py(它是可执行的并且包含#!)而不是将它作为参数传递给 python(例如 python pyBinapp.py)你可以用 killall 杀死它pyBinapp.py
我用:
pgrep -f youAppFile.py | xargs kill -9
pgrep 返回特定文件的 PID,您只杀死特定的应用程序。
pkill直接执行此操作,无需 grep 并通过管道将其杀死。
pkill -f pyBinApp
做你想要的。