我正在运行一个Python程序服务_host.py,它启动了多个进程。当我使用ps -ef | grep python
为了检查pids,它显示了很多信息:
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
按名称终止精确匹配
全名登记
更多信息请访问
man pkill
顺便说一句:还有
pgrep
可以使用名称获取PID改用^{} ,您将能够用
F4
过滤进程service_host
,并用F5
查看整个树。从那里你可以kill
使用F9
一次将它们全部删除遵循以下3个简单步骤:
htop
F4
并键入service_host
以过滤要终止的进程F5
将进程作为树进行排序。这会将子进程组织到其主进程ID(PID)F9
以获取终止选项15 SIGTERM
(信号终止)以优雅地请求停止进程,或突出显示9 SIGKILL
(信号终止)以强制关闭进程,最后按enter键我通常使用
9 SIGKILL
而不用太担心,但这取决于您和您在python脚本中所做的事情您已经用“python”标记了它,并且您的脚本几乎做对了,因此这里有一个固定版本的脚本使用
cmdline
方法将命令行提取为列表:虽然Linux命令行中的各种可能性当然是可能的
或者别的什么
相关问题 更多 >
编程相关推荐