mar*_*lon 5 python pid process sigkill kill-process
我正在运行一个Python程序service_host.py,它启动了多个进程。当我使用ps -ef | grep python
检查pid,它显示了很多:
congmin 26968 22897 0 Jun20 ? 00:00:00 python service_host.py
congmin 26969 22897 0 Jun20 ? 00:00:00 python service_host.py
congmin 26970 22897 0 Jun20 ? 00:00:00 python service_host.py
congmin 26971 22897 0 Jun20 ? 00:00:00 python service_host.py
congmin 26972 22897 0 Jun20 ? 00:00:00 python service_host.py
congmin 26973 22897 0 Jun20 ? 00:00:00 python service_host.py
congmin 26974 22897 0 Jun20 ? 00:00:00 python service_host.py
congmin 26975 22897 0 Jun20 ? 00:00:00 python service_host.py
Run Code Online (Sandbox Code Playgroud)
一次终止所有这些进程的最佳方法是什么?我在Linux上,不想通过进程ID一一杀死。有没有办法通过Python名称“service_host.py”杀死它们?我尝试了这个,但它根本没有杀死:
import psutil
PROCNAME = "service_host.py"
for proc in psutil.process_iter():
# check whether the process name matches
if proc.name() == PROCNAME:
proc.kill()
Run Code Online (Sandbox Code Playgroud)
有没有一个终端命令可以轻松完成这项工作?
fur*_*ras 14
Linux有pkill按名称杀死的命令
pkill python
Run Code Online (Sandbox Code Playgroud)
精确匹配
pkill -e 'python service_host.py'
Run Code Online (Sandbox Code Playgroud)
检查全名
pkill -f 'service_host.py'
Run Code Online (Sandbox Code Playgroud)
更多内容请参见man pkill
BTW:还可以pgrep使用名称来获取 PID。
相反htop,您\xe2\x80\x99将能够使用F4进程进行过滤service_host,并使用F5. 从那里你可以kill一次性将它们全部F9...
请遵循以下简单的 3 个步骤:
\nhtop\nF4并键入service_host以过滤要杀死的进程F5将进程按树排序。这会将子进程组织到其主进程 ID (PID)F9终止选项15 SIGTERM(信号终止)以优雅地请求停止进程或9 SIGKILL(信号终止)以强制关闭进程,最后按 Enter我通常9 SIGKILL不会太担心,但这取决于你以及你在 python 脚本中所做的事情!