0

所以我有一个二进制文件(binApp)要被杀死

killall -9 binApp

现在,我没有使用该二进制文件,而是创建了另一个 python 脚本 (pyBinapp.py) 来执行相同的任务。我想杀死那个 python 任务,这会工作吗:

killall -9 pyBinApp

?

另外,-9是什么意思?我找不到任何关于这个号码的文章。

4

4 回答 4

3

killall仅匹配进程名称(在您的情况下为“python”),因此它看不到脚本名称(“pyBinApp.py”),因为它是 python 进程参数之一。

但是pgrep可以匹配带有-f标志的完整参数列表,包括脚本文件名。

如果你正在运行python pyBinApp.py,试试这个来杀死它:

kill `pgrep -f pyBinApp.py`

pgrep返回与模式匹配的所有 PID,然后kill在所有这些 PID 上执行。

于 2014-08-16T01:25:29.227 回答
2

-9 是要发送的信号(而不是默认的 SIGTERM) - SIGKILL。应用程序可以忽略 SIGTERM,而 SIGKILL 则不能。

我不认为在这种情况下使用 killall 是安全的,因为你必须'killall python' 这可能会杀死其他正在运行的东西。'ps辅助| grep python' 查看正在运行的内容。

编辑:实际上 - 我只是测试了它,只要你直接运行 pyBinapp.py(它是可执行的并且包含#!)而不是将它作为参数传递给 python(例如 python pyBinapp.py)你可以用 killall 杀死它pyBinapp.py

于 2013-10-10T16:31:23.487 回答
0

我用:

pgrep -f youAppFile.py | xargs kill -9

pgrep 返回特定文件的 PID,您只杀死特定的应用程序。

于 2015-07-29T15:29:04.270 回答
0

pkill直接执行此操作,无需 grep 并通过管道将其杀死。

pkill -f pyBinApp

做你想要的。

于 2016-05-10T15:19:52.283 回答