如果要终止python脚本,那么killall的shell等价是什么?

时间:2013-10-10 16:28:47

标签: python shell unix

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

killall -9 binApp

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

killall -9 pyBinApp

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

4 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:2)

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

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

如果您正在运行python pyBinApp.py,请尝试将其删除:

kill `pgrep -f pyBinApp.py`

pgrep返回与模式匹配的所有PID,并且在所有模式上执行kill

答案 2 :(得分:0)

我用:

pgrep -f youAppFile.py | xargs kill -9

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

答案 3 :(得分:0)

pkill 直接进行,无需点击它并将其用于杀死。

pkill -f pyBinApp

完全符合你的要求。