killall 命令详解
更新时间:2026-08-28。本文是「一个命令一个文档」系列,聚焦
killall——进程管理命令族(见进程管理与调度命令族)。想"把名字叫 nginx 的所有进程都干掉",一条命令比逐个 kill 方便得多。
killall 按进程名(comm)匹配,给所有同名进程发送信号,默认发 SIGTERM(优雅终止)。
一、基本用法
bash
killall nginx # 给所有 nginx 进程发 TERM,优雅退出
killall -9 python # -9 即 SIGKILL,强制立即杀死(不清理)
killall -u deploy app # -u 只杀某个用户的该名进程默认
killall 名字发的是 TERM,进程有机会清理资源再退出,比直接 KILL 优雅。确认进程卡死无响应才上-9(SIGKILL),但它不会给进程任何善后机会,可能留下临时文件或锁。
二、按运行时间筛选
bash
killall -o 1h stale_worker # -o 只杀运行超过 1 小时的
killall -y 30m stale_worker # -y 只杀运行不到 30 分钟的
-o/−y按运行时长筛选,适合清理"跑了太久的僵尸任务"或"刚起来的异常实例",避免误伤正常进程。时间单位支持 s/m/h/d/w。
三、killall vs pkill vs kill
| 命令 | 匹配方式 |
|---|---|
killall | 精确匹配进程名(comm) |
| pkill | 匹配进程名/命令行,支持正则(见pkill 命令详解) |
| kill | 按 PID 精确杀(见kill 命令详解) |
killall 匹配的是
/proc/PID/comm的短名,对长命令行不敏感;pkill 能按完整命令行正则匹配,更灵活但更"危险"(容易误匹配)。简单按名杀用 killall 直观。
四、踩坑:名字太短会误杀
bash
killall sh # 危险!会把所有 shell 脚本解释器 sh 都杀掉,包括系统脚本名字取得越短、越通用,误杀风险越大。
sh、python、node这类通用名,用 killall 很容易波及无辜进程。这种场景优先用 pidof + kill,或用pkill -f配合更精确的命令行模式。
五、实战:重启服务进程组
bash
killall -TERM mydaemon && sleep 2 && mydaemon & # 先优雅停,再起一句话总结
killall = 按进程名批量发信号:默认 TERM 优雅退出,-9 强制 KILL,-u 限定用户、-o/-y 按时长筛;比逐个 kill 省事。注意短通用名(如 sh)易误杀——精确场景用 pkill 或 pidof+kill。