![](/img/trans.png)
[英]Python how to kill all selenium/ chrome processes after close?
[英]How to kill all processes of a Python program?
我正在運行一個 Python 程序 service_host.py,它啟動了多個進程。 當我使用ps -ef | grep python
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
一次殺死所有這些進程的最佳方法是什么? 我在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()
是否有可以輕松完成這項工作的終端命令?
Linux 有命令pkill
按名稱殺死
pkill python
精確匹配
pkill -e 'python service_host.py'
簽入全名
pkill -f 'service_host.py'
更多man pkill
順便說一句:還有pgrep
可以使用名稱獲取 PID。
您已將其標記為“python”,並且您的腳本接近於做正確的事情,所以這是您的腳本的固定版本——使用cmdline
方法將命令行提取為列表:
import psutil
PROCNAME = "service_host.py"
for proc in psutil.process_iter():
# check whether the process name matches
cmdline = proc.cmdline()
if len(cmdline) >= 2 and "python" in cmdline[0] and cmdline[1] == PROCNAME:
# print(proc)
proc.kill()
盡管 Linux 命令行的各種可能性當然是可能的。
kill `ps -ef | grep "python service_host.py" | grep -v grep | awk '{print $2}'`
管他呢...
使用htop
代替,您將能夠使用F4
過濾進程service_host
,並使用F5
查看整個樹。 從那里你可以用F9
一次kill
他們...
請遵循以下簡單的 3 個步驟:
htop
F4
並鍵入service_host
以過濾要殺死的進程F5
將進程排序為樹。 這會將子進程組織到其主進程 ID (PID)F9
選擇終止選項15 SIGTERM
(信號終止)以優雅地請求停止進程或9 SIGKILL
(信號終止)以強制關閉進程並最后按 enter 我通常 go 和9 SIGKILL
不用擔心太多,但這取決於你和你在 python 腳本中所做的事情!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.