linux终止进程核心是发信号而非删除,先用kill默认发送sigterm温和终止,不响应时再用kill-9强制结束;需先通过ps、pgrep等查pid,注意权限限制。

Linux 中用 kill 命令终止进程,核心是向目标进程发送信号,而不是直接“删除”它。进程是否真正退出,取决于它如何响应收到的信号。最稳妥的做法是先尝试温和终止,再考虑强制手段。
查到目标进程的 PID
没有 PID 就无法精准操作。常用方法有:
-
ps aux | grep 进程名—— 查看含关键词的进程及其 PID -
pgrep 进程名—— 直接输出匹配进程的 PID(简洁) -
pidof 进程名—— 适用于已知确切进程名的情况,如pidof firefox -
top或htop—— 交互式查看,按P按 CPU、M按内存排序,方便定位异常进程
用 kill 发送 SIGTERM(推荐优先使用)
这是默认行为,也是最安全的方式。进程收到后通常会自行清理资源(如保存数据、关闭网络连接),再退出。
-
kill 1234—— 向 PID 为 1234 的进程发送 SIGTERM(编号 15) -
kill -15 1234或kill -SIGTERM 1234—— 效果相同,显式指定更清晰
执行后可观察进程是否消失:ps -p 1234,若无输出说明已退出。
用 kill -9 强制终止无响应进程
当进程卡死、不响应 SIGTERM 时,才启用此方式。它发送 SIGKILL(编号 9),进程无法捕获或忽略,立即被内核终止。
-
kill -9 1234或kill -KILL 1234 - 注意:可能造成未保存数据丢失、文件损坏或端口残留,慎用
批量或按名称终止更高效
不需要逐个查 PID,适合管理同类进程:
-
pkill 进程名—— 如pkill python,终止所有名为 python 的进程 -
killall 进程名—— 功能类似,但匹配更严格(默认只匹配完整命令名) -
pkill -u username—— 终止指定用户的所有进程 -
kill -0 PID—— 不终止,仅检测进程是否存在(返回 0 表示活着)
实际操作中,先 kill PID,等几秒;没反应再 kill -9 PID。整个过程不复杂但容易忽略信号语义和权限限制——普通用户只能杀自己的进程,root 才能杀系统级进程。











