kill 命令
用途
发送一个信号到正在运行的进程。
语法
要向进程发送信号,请输入:
kill [ -s { SignalName | SignalNumber }] ProcessID ...
kill [ - SignalName | - SignalNumber ] ProcessID ...
要列示信号名称,请输入:
kill -l [ ExitStatus ]
描述
kill 命令发送一个信号(缺省,SIGTERM 信号)到一个正运行的程序。 缺省操作一般是停止进程。 如果想停止一个进程,在 ProcessID 变量中指定进程标识(PID)。 这个 shell 报告每个在后台运行的进程的 PID(除非在一个管道上启动多个进程,这个种情况下,shell 报告最后一个进程号)。 您也可以使用 ps 命令来查找命令的进程标识号。
root 用户可用 kill 命令来停止任何进程。 如果您并非 root 用户,那么您要停止的进程必须已由您启动。
SignalName 以大小写无关的方式被辨认,无 SIG 前缀。
如果指定的 SignalNumber 是 0,kill 命令检查指定 PID 的有效性。
标志
| 项 | 描述 |
|---|---|
| -s {SignalName | SignalNumber} | 将信号指定为信号数或信号名,例如为 SIGKILL 信号指定 -9 或KILL。 |
| -信号名称 | 指定信号名称,例如,HUP。 |
| -信号编号 | 指定一个信号数。注: 在语法中要用缺省的信号指定负 PID,必须指定 - - 作为一个信号。 否则,第一个操作数被解释为一个 SignalNumber。 |
| ProcessID | 指定十进制整数,该整数表示要对其发送信号的进程或进程组。 如果 PID 是一个正值,kill 命令发送进程 ID 与 PID 相等的进程。 如果 PID 值为 0,那么 kill 命令会向其进程组标识与发送者进程组标识相同的所有进程发送信号。 不将该信号发送到 PID 0 1 0 或 1 的进程。 如果 PID 为-1,则kill命令会向发送者的有效用户所拥有的所有进程发送信号。 不将该信号发送到 PID 0 1 0 或 1 的进程。 如果是负数但不是-1,则kill命令会向进程组 ID 等于 PID 绝对值的所有进程发送信号。 |
| -l | 列示实现支持的所有信号名称 |
| -l退出状态 | 列示已去掉公共 SIG 前缀的信号名。 如果 ExitStatus 为十进制整数值,那么会显示与该信号对应的信号名。 如果 ExitStatus 是一个对应于由这个信号终止的进程的退出状态值,那么显示对应于这个终止这个进程的信号的名称。 |
退出状态
本命令返回以下退出值:
| 项 | 描述 |
|---|---|
| 重大安全事件数量 | 对每个 ProcessID 操作数至少发现一个匹配的进程,并且指定的信号至少为一个匹配的进程成功处理。 |
| >0 | 发生错误。 |
示例
- 要停止给定进程,请输入以下命令:
这将停止进程1095通过向其发送缺省 SIGTERM 信号。 请注意该过程1095如果已进行特殊安排以忽略或覆盖 SIGTERM 信号,那么可能不会实际停止。kill 1095 - 要停止忽略缺省信号的多个进程,请输入以下命令:
这会将信号 9 ( SIGKILL 信号) 发送到进程2098和1569。 SIGKILL 信号是一个特殊信号,通常不能忽略或覆盖。kill -kill 2098 1569 - 要停止您的所有进程并自行注销,请输入以下命令:
这会向其进程组标识与发送者进程组标识相同的所有进程发送信号 9,即 SIGKILL 信号。 因为登录 shell 程序无法忽略 SIGKILL 信号,所以此命令还会停止登录 shell 程序并使您注销。kill -kill 0 - 要停止您拥有的所有进程,请输入以下命令:
此命令将信号 9(SIGKILL 信号)发送到有效用户拥有的所有进程,即使是那些在其他工作站上启动以及属于其他进程组的进程也是如此。 如果一个您请求的列表正被打印,它也被停止。kill -9 -1 - 要向进程发送另一个信号代码,请输入以下命令:
kill 命令的名称是一个误导,因为许多信号,包括 SIGUSR1,并不停止进程。 对 SIGUSR1 执行的操作由您正在运行的特定应用程序定义。kill -USR1 1103注:要发送信号 15,或用这种形式的 kill 命令发送 SIGTERM 信号,必须明确地指定 -15 或 TERM。
文件
| 项 | 描述 |
|---|---|
| /usr/include/sys/signal.h | 指定信号的名称。 |