应先用kill发送SIGTERM信号优雅终止,无响应时再用kill -9强制终止;需通过ps、pgrep或htop准确定位PID,批量处理可用pkill而非killall以防误杀。

直接用 kill -9 强制终止是最常见做法,但必须先准确定位进程 ID(PID),且应优先尝试更安全的 kill(默认 SIGTERM)信号。卡死的后台进程往往已不响应常规信号,所以查 PID + 两步终止是关键。
先找到卡死进程的 PID
后台进程看不见、摸不着,得靠命令“揪出来”:
-
ps aux | grep 关键词:比如进程名含 “nginx” 或日志里出现的关键词,执行
ps aux | grep nginx,输出中第二列就是 PID -
pgrep -f “完整命令片段”:比 grep 更精准,支持模糊匹配整个启动命令,例如
pgrep -f "python3 server.py" -
top 或 htop 实时筛选:运行
htop(若未安装可sudo apt install htop),按 F4 输入关键词过滤,一眼看到 PID 和 CPU 占用异常高的进程
优先发送 SIGTERM(优雅终止)
很多卡死进程其实只是暂时阻塞,并非完全无响应。先给它机会自我清理:
- 执行
kill 12345(把 12345 替换为实际 PID),等 3–5 秒 - 再运行
ps -p 12345确认是否还存在;如果已退出,说明成功 - 这个过程相当于礼貌敲门:“请保存数据、释放资源后离开”
确认无响应后再用 SIGKILL(强制终止)
如果上一步没反应,说明进程已失去调度能力,必须强杀:
- 执行
kill -9 12345或kill -SIGKILL 12345 - 立即再查一次:
ps -p 12345应返回 “No such process” - 注意:-9 不可捕获、不可忽略,但会跳过所有清理逻辑,可能丢失内存中未写入磁盘的数据
批量处理同类卡死进程(可选)
如果同一程序多个实例都卡住,不用一个个找 PID:
-
pkill -f "python3 worker.py"—— 按完整命令行匹配并发送 SIGTERM -
pkill -9 -f "java -jar app.jar"—— 强制终止所有匹配的 Java 进程 - 慎用
killall,它只按进程名匹配(如killall node),容易误杀正常服务


















