首页/系统/Linux 运维命令速查/killall 按名称全杀
进程与作业69 条

killall 按名称全杀

按进程名杀所有实例:killall nginx;-s 指定信号、-i 交互确认、-w 等待退出、-u 限定用户。

Linux 运维命令速查系统更新于 2026-10-13

killall 按名批量杀

killall 来自 psmisc,按进程名匹配并给全部同名进程发信号,等价于把 pkill 的用法简化成「名字写在最后」。它默认发送 TERM(信号 15),可以用 -s 指定其他信号,例如给 nginx 发 HUP 让它重读配置。因为作用范围是「所有匹配名字的进程」,线上使用前务必用精确匹配与用户限定收窄范围。

基本信息

适用平台Linux(psmisc 包)
语法killall [-s 信号] [-u 用户] [-e] [-i] [-w] 进程名
默认信号TERM(15),先请求优雅退出
命名限制匹配的是 /proc/PID/comm,最长 15 个字符

典型使用场景

  • 让 nginx 重读配置:killall -s HUP nginx
  • 停止一组自己启动的测试进程,不动系统服务
  • 清理批量跑起来的 python3 任务时用 -u 限定当前用户
  • 等待进程退出后再执行下一步:killall -w 配合 TERM
  • 脚本收尾阶段清理本次运行留下的辅助进程

常用示例

常用示例
killall -s HUP nginx            # 给所有 nginx 发 HUP,重载配置
killall -i sleep                # 每个匹配都交互确认一次
killall -w -s TERM worker        # 发送 TERM 并等待其退出
killall -u deploy python3        # 限定用户,避免误杀 root 的任务
killall -e -q backup             # 名称精确匹配,未命中时不报错
killall -l                       # 列出所有可用信号名
ps -ef | grep -c '[w]orker'      # 执行前先确认将要命中的进程数量

选项逐项读法

选项作用使用注意
-s指定发送的信号HUP 重载、TERM 优雅退出、KILL 不可被捕获
-e要求名称完全精确匹配默认会匹配名字更长的进程,线上建议加上
-i逐个交互确认交互式清理时防止误杀
-u限定属主用户多用户机器上的必备保险
-w等待进程退出后再返回依赖退出顺序的脚本要用
-q没有任何匹配时不报错定时任务里避免噪声告警
被 systemd 管理的服务不要用 killall 停:进程退出后很快会被自动拉起,看起来像「杀不掉」,正确做法是 systemctl stop 或 restart。
不同平台的 killall 语义差异极大:Linux 上是 psmisc 的按名杀进程,Solaris 系历史上是「杀掉所有可见进程」。跨平台脚本不要依赖 killall。

易错点

  • 名字匹配受 15 字符限制,长名进程杀不到,改用 pkill -f 按完整命令行匹配
  • 忘记用 -u 或 -e 会波及同名但他人的进程,线上先列出匹配结果再执行
  • 默认 TERM 对忽略该信号的进程无效,需要时用 KILL,但会跳过清理逻辑导致临时文件与锁残留
  • Solaris 系 killall 语义完全不同,跨平台脚本里使用会带来灾难性后果

数据来源与参考

  • man 1 killall(psmisc 手册)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌