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 权限。
