Linux基础命令kill详解
kill
是一个在 Unix 和类 Unix 操作系统(如 Linux)中使用的命令,用于向进程发送信号,通常用于终止进程。以下是 kill
命令的详细参数说明及示例。
基本语法
kill [选项] <pid>...
pid
: 要发送信号的进程的进程ID(Process ID)。
常用选项与信号
1. 默认信号 SIGTERM
(15)
默认情况下,kill
命令发送 SIGTERM
信号,要求进程正常终止。
kill <pid>
2. -s
或 --signal
指定要发送的信号。使用信号名称或数值。例如,要发送 SIGKILL
信号(强制终止进程):
kill -s SIGKILL <pid> # 或者使用信号编号 kill -9 <pid>
kill -9 无论进程当前正在执行什么操作,操作系统会立即终止该进程。
不允许进程做任何清理工作,所以可能会导致数据丢失或资源未释放
在处理未响应或冻结的进程时可使用此命令,但应谨慎使用
3. -l
或 --list
列出所有可用信号及其对应编号。
kill -l
4. -n
或 --signal
后面接信号编号,向指定的进程发送。
kill -n 9 <pid>
5. -p
仅显示指定的进程的PID,使用此选项并不会发送信号。
kill -p <pid>
6. -q
不显示错误信息。
kill -q <pid>
常用信号
SIGTERM
(15): 请求进程终止,允许清理资源。SIGKILL
(9): 强制杀死进程,无法被捕获或忽略。SIGINT
(2): 中断进程,通常可以通过 Ctrl+C 发送。SIGHUP
(1): 通知进程其控制终端已关闭。SIGSTOP
(19): 暂停进程,无法被捕获或忽略。SIGCONT
(18): 恢复被停止的进程。
示例
-
正常终止进程
终止进程ID为
1234
的进程,使用默认SIGTERM
信号:kill 1234
-
强制终止进程
强制终止进程ID为
1234
的进程,使用SIGKILL
信号:kill -9 1234
-
发送不同的信号
假设你想给进程ID为
1234
的进程发送SIGHUP
信号:kill -s SIGHUP 1234
-
列出所有信号
列出所有信号的名称和编号:
kill -l
-
使用信号编号杀死进程
如下命令发送
SIGINT
信号,通常用于中断进程:kill -2 1234
-
优雅地关闭所有子进程
使用
pkill
或killall
关闭特定的应用程序。例如,终止所有firefox
进程:killall firefox
注意事项
- 使用
SIGKILL
信号会强制终止进程,进程无法进行清理。通常建议优先使用SIGTERM
。 - 有些进程可能会捕获特定信号并采取相应措施(如清理工作),因此依据情况选择信号类型。
- 确保你有适当的权限去终止目标进程,某些系统进程可能需要 root 权限。