killall命令

killall 命令 #

killall命令用于按名称终止进程,而不是按进程 ID。它可以同时终止多个同名进程,是一个方便的进程管理工具。

语法 #

killall [选项] 名称...

常用选项 #

选项 描述
-e, --exact 要求精确匹配进程名(默认只需要匹配前 15 个字符)
-I, --ignore-case 忽略大小写
-g, --process-group 终止进程组而不是进程
-i, --interactive 在终止前询问确认
-l, --list 列出所有已知的信号名称
-q, --quiet 不显示抱怨信息
-r, --regexp 将名称解释为扩展正则表达式
-s, --signal 信号 发送指定信号而不是 SIGTERM
-u, --user 用户 只终止指定用户运行的进程
-v, --verbose 报告信号是否成功发送
-w, --wait 等待所有被终止的进程死亡
-y, --younger-than 时间 只终止比指定时间更新的进程
-o, --older-than 时间 只终止比指定时间更老的进程
-V, --version 显示版本信息
-h, --help 显示帮助信息

常见用法 #

1. 终止所有同名进程 #

killall firefox

这会向所有名为"firefox"的进程发送 SIGTERM 信号。

2. 使用特定信号终止进程 #

killall -9 firefox

killall -s KILL firefox

这会向所有名为"firefox"的进程发送 SIGKILL 信号。

3. 交互式终止进程 #

killall -i firefox

这会在终止每个进程前询问确认。

4. 终止特定用户的进程 #

killall -u username firefox

这只会终止由"username"用户运行的"firefox"进程。

5. 等待进程终止 #

killall -w firefox

这会等待所有"firefox"进程终止后才返回。

6. 使用正则表达式匹配进程名 #

killall -r "fire.*"

这会终止所有名称匹配正则表达式"fire.*“的进程。

7. 忽略大小写 #

killall -I firefox

这会终止名为"firefox”、“Firefox”、“FIREFOX"等的进程。

8. 终止比特定时间更新的进程 #

killall -y 1h firefox

这只会终止在过去 1 小时内启动的"firefox"进程。

9. 终止比特定时间更老的进程 #

killall -o 1d firefox

这只会终止启动时间超过 1 天的"firefox"进程。

10. 列出所有可用的信号 #

killall -l

时间格式 #

对于-y-o选项,时间可以使用以下后缀:

  • s:秒
  • m:分钟
  • h:小时
  • d:天
  • w:周
  • M:月
  • y:年

与其他命令的区别 #

killall vs. kill #

  • kill需要进程 ID,而killall使用进程名
  • killall可以同时终止多个同名进程
  • killall提供了更多的过滤选项,如用户、进程年龄等

killall vs. pkill #

  • pkillkillall都可以按名称终止进程
  • pkill支持更复杂的模式匹配和过滤条件
  • killall在某些系统上可能更可靠地匹配完整的进程名

实用示例 #

1. 终止所有 Web 浏览器 #

killall firefox chrome chromium opera

2. 重启所有 Apache 进程 #

killall -HUP apache2

3. 终止所有 Java 进程 #

killall java

4. 终止所有僵尸进程 #

killall -9 -r ".*defunct.*"

5. 终止长时间运行的进程 #

killall -o 24h -v process_name

6. 终止最近启动的进程 #

killall -y 5m -v process_name

7. 终止特定用户的所有进程 #

killall -u username

8. 终止所有 Python 脚本 #

killall python python3

注意事项 #

  1. 在不同的 Unix/Linux 系统上,killall的行为可能不同:

    • 在某些系统(如 Solaris)上,不带参数的killall会终止所有进程
    • 在 Linux 上,killall需要至少一个进程名参数
  2. 使用killall时要小心,特别是在系统进程上:

    • 终止关键系统进程可能导致系统不稳定或崩溃
    • 使用-i(交互式)选项可以在终止前确认
  3. 进程名匹配:

    • 默认情况下,killall只匹配前 15 个字符
    • 使用-e选项可以要求精确匹配
    • 使用-r选项可以使用正则表达式匹配

提示 #

  • 使用-v选项可以查看哪些进程被成功终止
  • 使用-i选项可以在终止前确认,这在处理重要进程时很有用
  • 使用-w选项可以等待进程终止,这在脚本中很有用
  • 在终止系统进程之前,确保了解可能的后果
  • 使用ps aux | grep process_name可以在终止前查看匹配的进程
  • 在多用户系统上,普通用户只能终止自己的进程
  • 使用-u选项可以只终止特定用户的进程,这在管理多用户系统时很有用
  • 使用-y-o选项可以根据进程的运行时间过滤进程