Linux 信号与进程终止速查

常用命令

kill -l
kill -15 <pid>
kill -TERM <pid>
kill -9 <pid>
kill -HUP <pid>
kill -USR1 <pid>
kill -STOP <pid>
kill -CONT <pid>
kill -0 <pid> && echo alive
pkill -f 'java -jar app.jar'
pkill -TERM -u deploy java
killall -TERM nginx
ps -eo pid,ppid,stat,cmd | grep '[a]pp'

场景速查

目的 写法/命令 注意
优雅停止 kill -TERM <pid> 应用需自行处理并退出
强制杀死 kill -KILL <pid> 不可捕获,可能丢数据
重载配置 kill -HUP <pid> 仅程序实现 HUP 处理时有效
暂停进程 kill -STOP <pid> 进程不再被调度
恢复进程 kill -CONT <pid> 与 STOP 配对使用
检查存活 kill -0 <pid> 同时检查存在性与权限
按名字终止 pkill -x nginx -x 精确匹配进程名
按命令行终止 pkill -f 'pattern' 先用 pgrep -af 核对
按用户终止 pkill -u deploy 影响该用户全部进程
查看信号表 kill -l 对照编号与名称
退出码 $? 为 128+n 143=128+15,137=128+9

易错点

相关命令

读完自测

  1. SIGTERM 与 SIGKILL 的核心区别是什么?
  2. 退出码 143 代表什么?
  3. 如何精确按进程名终止 nginx?
答案
  1. SIGTERM 可被捕获并优雅退出,SIGKILL 不可捕获、立即终止。
  2. 进程被 15 号信号 SIGTERM 终止,即 128+15。
  3. 用 killall -TERM nginx 或 pkill -x nginx。