Linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和Linux命令。本文主要介绍Linux kill 命令。

1、命令简介

kill:用于在 Linux 和类 Unix 操作系统中用于终止进程的命令。它允许用户通过发送信号来停止运行中的进程。默认情况下,kill 命令发送的是 TERM (终止) 信号,但用户可以指定不同的信号类型。该命令在系统管理、调试和维护进程时非常有用。

2、命令语法

kill [options] <pid> [...]
kill [-l | --list | -t | --table] [SIGNAL]...

3、命令描述

kill 命令发送信号给进程,使它们终止运行。通常它是一个 shell 内置命令,这意味着命令是从用户的 shell 中调用,而不是从外部可执行程序中调用。kill 命令的第一种形式会向所有指定的 PID 发送一个信号。默认的信号是 TERM 信号(终止一个活动进程)。当指定特定的信号(名称或编号)时,进程会根据接收到的信号以特定的方式进行响应。

此外,kill 命令可以列出有关可用信号类型的信息。使用 -l -L 来列出所有可用信号。一些常用的信号包括 HUPINTKILLSTOPCONT0。信号可以用三种方式指定:-9-SIGKILL-KILL

负的 PID 值可以用来选择整个进程组;请查看 ps 命令输出中的 PGID 列。PID 值为 -1 是特殊的,它表示除了 kill 进程本身和 init 进程之外的所有进程。

4、命令选项

参数

说明

[...]

发送信号给列出的每个。

-s --signal

指定要发送的信号。

信号可以通过名称或编号来指定。

信号的行为在 signal(7) 手册页中有解释。

-l, --list

[signal]

列出信号名称。该选项带有可选参数,可以将信号编号转换为信号名称,或者反过来。

-L, --table

以表格形式列出信号名称。

注意:shell(命令行解释器)可能有一个内置的 kill 命令。可能需要将这里描述的命令作为 /bin/kill 来运行,以解决冲突。

5、使用示例

1)发送默认信号 SIGTERM 给所有这些进程。

$ kill 20539 20549 20559 20720

2)终止所有可以终止的进程。

$ kill -9 -1

3)将信号编号 11 转换为信号名称。

$ kill -l 11
SEGV

$ kill -l 6
ABRT

4)要查看信号名称和编号,请将 -l 选项传递给 kill 命令。

$ kill -l
1) SIGHUP        2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
6) SIGABRT       7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR1
11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM
16) SIGSTKFLT	17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
26) SIGVTALRM	27) SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR
31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1	36) SIGRTMIN+2	37) SIGRTMIN+3
38) SIGRTMIN+4	39) SIGRTMIN+5	40) SIGRTMIN+6	41) SIGRTMIN+7	42) SIGRTMIN+8
43) SIGRTMIN+9	44) SIGRTMIN+10	45) SIGRTMIN+11	46) SIGRTMIN+12	47) SIGRTMIN+13
48) SIGRTMIN+14	49) SIGRTMIN+15	50) SIGRTMAX-14	51) SIGRTMAX-13	52) SIGRTMAX-12
53) SIGRTMAX-11	54) SIGRTMAX-10	55) SIGRTMAX-9	56) SIGRTMAX-8	57) SIGRTMAX-7
58) SIGRTMAX-6	59) SIGRTMAX-5	60) SIGRTMAX-4	61) SIGRTMAX-3	62) SIGRTMAX-2
63) SIGRTMAX-1	64) SIGRTMAX

5)有一个特殊的信号编号 '0'。它不表示一个有效的信号,但可以用来测试 PID 参数是否指定了可以向其发送信号的有效进程。

$ ps
PID TTY          TIME CMD
11571 pts/20   00:00:00 bash
22166 pts/20   00:00:00 ps

6)这里的 11571 是一个有效的 PID。当发送信号 0 给这个进程时,kill 命令会以退出状态 0 退出。而当同样的信号 0 发送给一个不存在的 PID,比如 11579 时,它会报告当前系统中没有这样的进程。

$ kill -s 0 11571

$ kill -s 0 11579
bash: kill: (11579) - No such process

如果 PID 是正数,则信号将发送给具有该进程ID的进程。如果 PID 是零,则信号将发送给当前进程的进程组中的所有进程。如果 PID-1,则信号将发送给用户具有发送信号权限的所有进程。如果 PID 小于 -1,则信号将发送给进程组中绝对值等于 PID 的所有进程。

推荐文档