概述
killall 是一个强大的工具,它允许您通过进程名称而不是进程 ID (PID) 来一次性终止多个进程。由于它针对的是同名进程的所有实例,因此在终止特定应用程序的所有窗口或后台服务时特别方便。
主要特点
- 基于进程名称的终止
- 支持发送各种信号(默认为 SIGTERM)
- 可按用户、时间等多种条件过滤
- 一次性处理多个实例
主要选项
killall 命令提供了多种选项,可以精细控制进程的终止方式和目标。
默认行为和信号
进程过滤
生成的命令:
请尝试组合命令。
描述:
`killall` 执行命令。
通过组合这些选项,您可以与 AI 一起虚拟地执行命令。
使用示例
killall 命令的各种使用示例。
终止所有指定名称的进程
killall firefox
终止 Firefox 浏览器的所有实例。发送默认信号 SIGTERM(正常终止请求)。
使用特定信号强制终止
killall -s SIGKILL chrome
使用 SIGKILL(强制终止)信号终止 Chrome 浏览器的所有实例。此信号不会给进程清理操作的机会,因此应谨慎使用。
交互模式终止
killall -i sshd
在终止 sshd(SSH 守护进程)进程的每个实例之前,会提示用户进行确认。输入 'y' 将会终止。
终止特定用户的进程
killall -u user1
终止用户 'user1' 运行的所有进程。
等待进程终止
killall -w myapp
命令将等待当前运行的 'myapp' 进程完全终止。
安装
killall 命令作为 'psmisc' 包的一部分,在大多数 Linux 发行版中都已默认安装。如果您的系统上未安装,可以使用以下命令进行安装。
Debian/Ubuntu
sudo apt update && sudo apt install psmisc
使用 APT 包管理器安装 psmisc 包。
CentOS/RHEL/Fedora
sudo yum install psmisc
# 或
sudo dnf install psmisc
使用 YUM 或 DNF 包管理器安装 psmisc 包。
提示与注意事项
使用 killall 命令时的一些有用提示和需要注意的事项。
使用 SIGKILL (-9) 的注意事项
SIGKILL(信号编号 9)会强制进程立即终止,不会给进程清理打开文件或数据的时间。这可能导致数据丢失或系统不稳定,因此应优先尝试其他信号(例如 SIGTERM),仅在失败时才作为最后手段使用。
- **优先使用 SIGTERM(默认值)**:大多数应用程序在收到 SIGTERM 后会正常终止。
- **最后手段使用 SIGKILL**:仅在进程无响应时使用。
确认准确的进程名称
killall 使用准确的进程名称。建议使用 `ps aux | grep <进程名称>` 命令来确认您要终止的进程的准确名称。
- 示例:`ps aux | grep firefox`
killall 与 pkill 的区别
`killall` 基于精确的进程名称进行匹配,而 `pkill` 可以使用正则表达式来匹配进程名称,从而实现更灵活的搜索和终止。
- `killall`:精确名称匹配(例如:`killall firefox`)
- `pkill`:正则表达式匹配(例如:`pkill -f 'firef[o]x'`)
- `pkill` 扩展了 `kill` 命令的功能,无需直接指定 PID。
终止系统进程的注意事项
使用 `killall` 终止系统的关键进程可能导致系统不稳定或崩溃。尤其是在以 `root` 权限运行时,更应格外小心。
- 例如:切勿执行 `killall systemd`、`killall init` 等命令。