命令速查processes
kill:向进程发送信号
使用 kill 向已核实的进程发送信号,优先请求正常退出,并把 SIGKILL 留作最后手段。
kill 向指定进程或进程组发送信号,并不只表示“强制结束”。未指定信号时通常发送 SIGTERM,让程序有机会保存状态并清理资源。
kill [-s 信号] PID ...kill -l# 启动一个专供练习的进程,避免误操作真实服务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 无效且可接受数据丢失时,才考虑以下语法;不要用练习环境测试:
kill -KILL "$pid"风险与注意事项
Section titled “风险与注意事项”- 错误 PID、负 PID 或特殊值可能影响非预期进程或整个进程组。
SIGKILL不能被捕获或忽略,目标无法清理临时文件、刷新缓存或完成事务。- 只能向自己有权限的进程发送信号;root 权限会扩大误操作范围。
- PID 会复用。检查后等待过久再发送信号,可能命中另一个进程;发送前应重新核对。
- 由 systemd 管理的服务优先通过
systemctl处理,以保留服务状态和重启策略语义。
Shell 往往提供内建 kill,外部 procps-ng 或 BusyBox 实现的扩展选项可能不同。可移植脚本优先使用信号名称,如 TERM,不要依赖除标准信号之外的固定数字。