跳转到内容
命令速查processes

kill:向进程发送信号

使用 kill 向已核实的进程发送信号,优先请求正常退出,并把 SIGKILL 留作最后手段。

状态
已审阅
难度
进阶
风险
破坏性操作
平台
linux · debian · ubuntu

kill 向指定进程或进程组发送信号,并不只表示“强制结束”。未指定信号时通常发送 SIGTERM,让程序有机会保存状态并清理资源。

Terminal window
kill [-s 信号] PID ...
kill -l
Terminal window
# 启动一个专供练习的进程,避免误操作真实服务
sleep 300 &
pid=$!
# 先核对身份;没有输出通常表示 PID 当前不存在
ps -p "$pid" -o pid,ppid,user,stat,etimes,args
# 信号 0 不实际发送信号,只检查目标和权限
kill -0 "$pid"
# 请求目标正常终止
kill -TERM "$pid"
# 再次验证目标是否仍存在
ps -p "$pid" -o pid,stat,comm
# 回收已结束的练习子进程
wait "$pid" 2>/dev/null || true

真实故障中,只有在目标身份已再次核对、SIGTERM 无效且可接受数据丢失时,才考虑以下语法;不要用练习环境测试:

Terminal window
kill -KILL "$pid"
  • 错误 PID、负 PID 或特殊值可能影响非预期进程或整个进程组。
  • SIGKILL 不能被捕获或忽略,目标无法清理临时文件、刷新缓存或完成事务。
  • 只能向自己有权限的进程发送信号;root 权限会扩大误操作范围。
  • PID 会复用。检查后等待过久再发送信号,可能命中另一个进程;发送前应重新核对。
  • 由 systemd 管理的服务优先通过 systemctl 处理,以保留服务状态和重启策略语义。

Shell 往往提供内建 kill,外部 procps-ng 或 BusyBox 实现的扩展选项可能不同。可移植脚本优先使用信号名称,如 TERM,不要依赖除标准信号之外的固定数字。