进程、Signal 与安全停止

找到准确目标

pgrep -af node
ps -fp <PID>
systemctl status nginx
pm2 describe nloop

不要使用宽泛的 pkill nodekillall node,一台服务器可能有多个应用。PID 也会复用,应同时核对命令、用户、启动时间和父进程。

Signal

kill -TERM <PID>
kill -KILL <PID>

kill 成功只表示 Signal 已发送,不表示进程已经退出:

while kill -0 <PID> 2>/dev/null; do sleep 1; done

实际操作应有明确等待上限,超时后收集现场并决定是否升级为强制终止。

推荐优先级

pm2/systemctl/application stop
→ SIGTERM
→ 等待并验证
→ 收集卡住原因
→ 最后才 SIGKILL

强制退出可能中断请求、截断文件、留下临时目录或丢失缓冲日志。数据库事务通常会回滚,但不能因此假设业务整体一定一致。