kill命令本质是向进程发送信号,而非单纯“杀死”,通过不同信号(如15优雅退出、9强制终止、1重载配置、19暂停、18恢复)控制进程行为,需结合pid定位与信号选择实现精准管理。

kill 命令本质是向进程发送信号,不是单纯“杀死”,而是通过不同信号让进程执行特定动作:退出、暂停、重载配置、继续运行等。关键在于选对信号,并配合正确的方式指定目标进程。
常用信号及其作用
信号用编号或名称表示,最常使用的几个:
- SIGTERM(15):默认信号,请求进程优雅退出,允许它释放资源、保存状态;应作为第一选择
- SIGKILL(9):强制终止,内核立即结束进程,无法捕获或忽略;仅在 SIGTERM 无效时使用
- SIGHUP(1):常用于通知服务重读配置文件(如 nginx、ssh),不中断服务本身
- SIGSTOP(19):暂停进程(类似 Ctrl+Z),不可被忽略或捕获
- SIGCONT(18):恢复被 SIGSTOP 或 Ctrl+Z 暂停的进程
- SIGINT(2):模拟用户按 Ctrl+C,常用于前台进程中断
怎么指定信号
有三种等效写法,任选其一即可:
- kill -15 1234 —— 用数字编号
- kill -TERM 1234 或 kill -SIGTERM 1234 —— 用信号名(大小写不敏感)
- kill 1234 —— 不写信号,默认就是 -15(SIGTERM)
注意:-9 和 -KILL 效果相同,但推荐用 -9 更简洁;-s 选项可显式指定,如 kill -s KILL 1234,但日常很少需要。
如何查到要操作的进程 PID
kill 必须知道目标进程的 PID。常用查找方式:
- ps aux | grep nginx —— 查看含关键词的进程详情
- pgrep nginx —— 直接输出匹配进程的 PID(适合脚本)
- pidof nginx —— 同样返回 PID,支持多进程名
- top 或 htop —— 实时交互式查看,按 P 可按 CPU 排序,找高占用进程
例如:想重载 nginx 配置,先 pgrep nginx 得到主进程 PID(如 5678),再执行 kill -HUP 5678。
实用组合技巧
单条命令完成常见任务:
- 批量终止同名进程:kill $(pgrep chrome)(用 $() 捕获输出)
- 安全重启服务(先发 TERM,再发 KILL):kill 1234 && sleep 1 || kill -9 1234
- 检查进程是否存活(不发信号):kill -0 1234,返回 0 表示存在,非 0 表示不存在或无权限
- 向整个进程组发信号(如终止某终端所有子进程):kill -TERM -1234(PGID 前加负号)











