kill 概述
`kill` 命令向具有特定进程 ID(PID)的进程发送信号。最常见的信号是请求终止进程的信号,但根据信号的类型,进程可能会有不同的反应。例如,可以请求进程暂停或重新加载配置文件。
进程 ID (PID) 的重要性
`kill` 命令基本上以 PID 作为参数。因此,确切了解您想要控制的进程的 PID 是很重要的。您可以使用 `ps` 命令或 `top` 命令来确认进程的 PID。
kill 的主要角色
- 结束进程: 强制或正常结束不再需要或发生故障的进程。
- 进程重启/重新加载: 通过发送特定信号来促使进程重新读取配置文件或重启。
- 系统资源管理: 结束占用过多资源的进程,以确保系统稳定性。
最常用的信号
虽然有多种信号,但以下两种是最常用的:
主要信号
- **SIGTERM (15, 默认值)**: 向进程发送 '结束' 的温和请求。接收到此信号时,进程可以执行清理工作并结束。在大多数情况下,首先尝试此信号。
- **SIGKILL (9)**: 立即强制结束进程。进程无法忽略或拦截此信号,并且将被强制结束,而没有执行清理工作的机会。应作为最后手段。
主要 kill 命令选项
`kill` 命令使用信号编号或信号名称来控制进程。发送信号到特定进程时,必须准确指定该进程的 PID。
1. 基本用法
2. 有用的信号
3. 查看所有信号列表
生成的命令:
请尝试组合命令。
描述:
`kill` 执行命令。
通过组合这些选项,您可以与 AI 一起虚拟地执行命令。
killall 命令(通过名称结束进程)
`killall` 命令与 `kill` 不同,使用进程的名称而不是 PID 向所有与该名称匹配的进程发送信号。这在结束特定应用程序的所有实例时非常方便。
正常结束名称进程
killall nginx
向所有名为 `nginx` 的进程发送 SIGTERM 信号,请求正常结束。
强制结束名称进程
killall -9 firefox
向所有名为 `firefox` 的进程发送 SIGKILL 信号,立即强制结束。
仅结束特定用户的进程
killall -u $(whoami) chrome
仅结束当前用户的 `chrome` 进程。不会影响其他用户的 `chrome` 进程。
pkill 命令(通过模式结束进程)
`pkill` 命令与 `killall` 类似,通过名称结束进程,但具有更大的灵活性,因为它使用正则表达式模式来查找进程。这在通过部分名称查找进程或一次结束多个相关进程时非常有用。
正常结束通过模式查找的进程
pkill http
向所有名称中包含 'http' 的进程发送 SIGTERM 信号以结束它们。 (例如:`httpd`、`apache2` 等)
强制结束通过模式查找的进程
pkill -9 mysql
向所有名称中包含 'mysql' 的进程发送 SIGKILL 信号以强制结束。
结束特定用户的进程
pkill -u www-data php-fpm
结束属于 `www-data` 用户的所有 'php-fpm' 进程。
使用示例
`kill`、`killall`、`pkill` 命令的各种应用示例,帮助您有效管理系统进程。
结束特定进程 ID (PID)
kill 12345
向 PID 为 `12345` 的进程发送 SIGTERM 信号以尝试正常结束。
强制结束进程(使用 PID)
kill -9 54321
当 PID 为 `54321` 的进程没有响应时,使用 `SIGKILL` 信号强制结束。
Nginx 进程重新加载(使用 SIGHUP)
sudo kill -1 $(cat /run/nginx.pid)
找到 Nginx 的主进程(PID),发送 `SIGHUP` 信号以重新读取配置文件。(Nginx 进程 PID 可以通过 `ps aux | grep nginx` 等命令确认)
通过名称结束所有 Chrome 浏览器
killall chrome
正常结束所有正在运行的 Chrome 浏览器进程。(窗口关闭后未保存的内容可能会丢失)
结束用户 'johndoe' 的所有进程
sudo killall -9 -u johndoe
强制结束用户 `johndoe` 正在运行的所有进程。(需要管理员权限)
结束占用 CPU 较高的进程(示例)
# 1. 使用 top 或 htop 确认 PID(例如:12345)
# 2. 结束该 PID
kill 12345
`top` 或 `htop` 确认占用 CPU 较高的进程的 PID 后,结束的常见场景。