终结进程需分步操作:先发SIGTERM(kill或pkill)让程序优雅退出,等待3–5秒后检查状态,未退出再用SIGKILL(-9)强制终止;僵尸进程须处理父进程。

终结进程不是“一刀切”,关键在选对命令、用对信号。优先让程序自己收拾好再退出,实在不响应才强制中断。
kill:精准控制单个进程的生命
它靠 PID 定位,最稳妥,适合已知具体进程号的场景。默认发 SIGTERM(15),给程序留出清理时间——比如保存缓存、关闭数据库连接、释放锁。
- 优雅终止:
kill 1234或kill -15 1234 - 强制终止(仅当无响应时):
kill -9 1234 - 重载配置(不重启):
kill -1 1234,常用于 nginx、sshd 等守护进程 - 查所有信号:
kill -l,快速确认编号与名称对应关系
pkill:按名、按用户、按命令行灵活匹配
不用先查 PID,支持模糊匹配和条件筛选,适合批量操作或目标不唯一的情况。
- 按进程名终止:
pkill nginx(默认 SIGTERM)或pkill -9 java - 按用户名杀光所有进程:
pkill -u alice(安全起见先试不加 -9) - 按完整命令行匹配(防误杀):
pkill -f "python3 app.py --debug" - 只杀某个用户的特定进程:
pkill -u bob sshd,踢掉登录但保留后台任务
killall:严格匹配进程名,适合标准化服务
要求进程名完全一致,不支持子串匹配,因此更可控,也更“干净”。适合已知确切二进制名的环境(如 systemd 管理的服务)。
- 终止全部同名进程:
killall redis-server - 强制终止:
killall -9 chrome - 注意:若进程实际运行的是软链接或带路径的启动方式(如
/usr/local/bin/nginx),killall nginx可能失效;此时 pkill -f 更可靠
别跳过这三步:线上终结标准流程
避免数据丢失或状态紊乱,养成规范动作:
- 第一步:发
kill PID或pkill name,等待 3–5 秒 - 第二步:用
ps -p PID或pgrep name确认是否已退出 - 第三步:仍存活,再执行
kill -9 PID或pkill -9 name
僵尸进程(Zombie)无法被 kill 直接处理,需排查其父进程是否异常,或考虑重启父进程。


















