所以我有一个要被杀死的二进制文件(binApp)
killall -9 binApp
现在,我没有使用那个二进制文件,而是创建了另一个python脚本(pyBinapp.py)来执行相同的任务。我想杀死那个python任务,这会工作:
killall -9 pyBinApp
另外,-9是什么意思?我找不到任何关于这个号码的文章。
答案 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
完全符合你的要求。