You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux系统中是否存在杀死进程及所有子进程的简便方法?如何通过PID一次性终止目标进程及其所有子进程?

一次性杀死目标进程及其所有子进程的简便方法

这个问题我太熟了——手动杀父进程后,子进程会变成孤儿被init/systemd接管,残留着占资源确实闹心。下面给你几个靠谱的简便方法,按需选用:

方法1:利用进程组(最快捷)

每个进程都属于一个进程组,如果目标进程是进程组组长(通常自己启动的进程都是组长),直接用负的PID就能杀死整个进程组:

kill -TERM -<目标PID>
# 如果进程不肯退出,改用强制杀死的KILL信号
kill -9 -<目标PID>

先确认目标进程是不是组长:用ps -o pgid= <目标PID>,输出的数字如果和目标PID一致,就是组长,放心用这个方法。

方法2:用pstree提取所有子进程ID(通用型)

不管目标进程是不是组长,这个方法都能精准捕获它的所有子进程,一起杀死:

pstree -p <目标PID> | grep -o '[0-9]*' | xargs kill -TERM
  • pstree -p <PID>:列出该PID下的所有进程,带进程ID
  • grep -o '[0-9]*':提取所有数字(也就是所有进程ID)
  • xargs kill -TERM:把这些ID传给kill命令,发送终止信号

同样,需要强制杀死就把-TERM换成-9。

方法3:按进程名批量杀死(适合同名进程)

如果知道目标进程的名称,且想杀死所有同名进程及其子进程,用killall更方便:

killall -TERM <进程名称>
# 强制杀死
killall -9 <进程名称>

注意:如果系统里有多个同名的无关进程,这个方法会误杀,所以只适合确定要杀死所有同名进程的场景。

额外技巧:确认进程是否都被清除

执行完命令后,用下面的命令检查目标进程树是否还存在:

pstree -p <目标PID>
# 或者用ps查看
ps auxf | grep <目标PID>

内容的提问来源于stack exchange,提问作者Miya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 06:51:43