killall是Linux中按进程名批量终止进程的命令,仅匹配/proc/[pid]/comm中的短名称,不支持默认通配符或正则,需用pkill -f匹配完整命令行,操作前必须用-v或-l验证目标。

killall 是 Linux 中按进程名批量终止进程的常用命令,它不依赖 PID,直接通过名称匹配并发送信号。但要注意:它只匹配内核记录的「短进程名」(来自 /proc/[pid]/comm),不是完整命令行,也不支持通配符或正则(除非显式加 -r 选项)。
基础用法:精准匹配进程名
killall 默认发送 SIGTERM(15)信号,给程序留出清理时间:
-
终止所有 nginx 进程:
killall nginx -
终止所有 python3 进程(注意:含 IDE、终端脚本等):
killall python3 -
强制终止(仅当无响应时):
killall -9 chrome或killall -KILL redis-server
安全操作:先预览再执行
直接运行 killall 容易误杀,务必先验证目标:
-
列出将被终止的进程:
killall -v nginx—— 显示每个匹配的 PID 和是否成功发送信号 -
交互式确认(逐个询问):
killall -i python3 -
只杀当前用户进程,避免影响他人:
killall -u $USER node
匹配原理与常见误区
理解 killall 怎么找进程,能避开多数误操作:
- 运行
python3 /opt/app/main.py后,/proc/[pid]/comm中存的是python3,不是main.py—— 所以killall main.py无效 -
killall firefox*或killall 'nginx.*'会报错 No such process,因默认不支持通配符 - 想按路径或参数筛选(如“所有启动自
/var/www/myapp/的 Python 进程”),应改用pkill -f
替代方案:何时该换 pkill -f?
当 killall 匹配太宽泛或不够准时,pkill -f 更可靠:
-
匹配完整命令行:
pkill -lf "gunicorn.*8001"(先预览)→pkill -f "gunicorn.*8001"(再执行) -
限定用户 + 命令行:
pkill -u www-data -f "php-fpm" -
避免 grep 自身被匹配:用
pgrep -f "myapp" | xargs kill比管道 grep 更干净


















