如何杀死Python程序的所有进程?

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。


and*_*lle 3

相反htop,您\xe2\x80\x99将能够使用F4进程进行过滤service_host,并使用F5. 从那里你可以kill一次性将它们全部F9...

\n

请遵循以下简单的 3 个步骤:

\n
    \n
  1. 输入htop\n
      \n
    • 可以选择F4并键入service_host以过滤要杀死的进程
    • \n
    • 可以选择F5将进程按树排序。这会将子进程组织到其主进程 ID (PID)
    • \n
    \n
  2. \n
  3. 滚动列表并突出显示要终止的进程,然后按F9终止选项
  4. \n
  5. 突出显示15 SIGTERM(信号终止)以优雅地请求停止进程或9 SIGKILL(信号终止)以强制关闭进程,最后按 Enter
  6. \n
\n

我通常9 SIGKILL不会太担心,但这取决于你以及你在 python 脚本中所做的事情!

\n