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 #
pkill
和killall
都可以按名称终止进程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
注意事项 #
-
在不同的 Unix/Linux 系统上,
killall
的行为可能不同:- 在某些系统(如 Solaris)上,不带参数的
killall
会终止所有进程 - 在 Linux 上,
killall
需要至少一个进程名参数
- 在某些系统(如 Solaris)上,不带参数的
-
使用
killall
时要小心,特别是在系统进程上:- 终止关键系统进程可能导致系统不稳定或崩溃
- 使用
-i
(交互式)选项可以在终止前确认
-
进程名匹配:
- 默认情况下,
killall
只匹配前 15 个字符 - 使用
-e
选项可以要求精确匹配 - 使用
-r
选项可以使用正则表达式匹配
- 默认情况下,
提示 #
- 使用
-v
选项可以查看哪些进程被成功终止 - 使用
-i
选项可以在终止前确认,这在处理重要进程时很有用 - 使用
-w
选项可以等待进程终止,这在脚本中很有用 - 在终止系统进程之前,确保了解可能的后果
- 使用
ps aux | grep process_name
可以在终止前查看匹配的进程 - 在多用户系统上,普通用户只能终止自己的进程
- 使用
-u
选项可以只终止特定用户的进程,这在管理多用户系统时很有用 - 使用
-y
和-o
选项可以根据进程的运行时间过滤进程