kill命令

kill命令向指定的pid进程发送信号,如果不指定要发送的signal信号,则默认情况下signalSIGTERM,它会终止进程,要列出所有可用信号,可以使用-l选项获取Linux信号列表,经常使用的信号包括HUPINTKILLSTOPCONT0,可以通过三种方式指定信号: 按数字例如-9,带有SIG前缀例如-SIGKILL,不带SIG前缀例如-KILL。负PID值用于指示过程组ID,如果传递了进程组ID,则该组中的所有进程都将接收到该信号,PID-1是特殊的,其指示除两个以外的所有进程,kill进程本身和initPID 1,其是系统上所有进程的父进程,将-1指定为目标会将信号发送到除这两个以外的所有进程。

语法

kill pid ...
kill {-signal | -s signal} pid ...
kill {-l | --list[=signal] | -L | --table}

参数

信号

下列的某些信号是不能使用的,因为系统有可能不支持这些信号,或者这些信号已中断,详情可以实际查阅系统的kill -l命令。每个系统都有信号13915,这些是最常见的信号。终止信号不仅用于关闭锁定的应用程序,还可以阻止软件执行不允许的任务,这意味着其中一些终止信号是安全的一部分,另外kill命令不仅停止/终止进程,而且还暂停,继续和重新启动进程。

 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

示例

要显示所有可用信号,查看信号的详细信息可以使用man命令,例如信号7 SIGBUS即使用man 7 signal

kill -l

在表格中列出可用的信号名称和编号。

kill -L

终端断线,重新加载配置文件,平滑重启。

kill -1 111

通知进程关闭,使进程自行关闭,这个关闭是安全、干净地退出,如果kill命令后直接加进程的pid号默认选项为-15,这个信号是可以被进程自身忽略并继续执行自身的,即该信号是可以被阻塞和忽略的。

kill -15 111

强行中断当前程序的执行,类似Ctrl+C按键用以结束进程的结果,该信号是可以被阻塞和忽略的。

kill -2 111

退出进程,类似Ctrl+\按键用以结束进程的结果,该信号是可以被阻塞和忽略的。

kill -3 111

强行关闭进程,-9信号是无条件终止,这个信号不能被捕获或忽略,同时接收这个信号的进程在收到这个信号时不能执行任何清理,该信号是不可以被阻塞和忽略的,当然通常是不建议使用kill -9的,应该尝试使用-15以及-2给目标进程一个清理自身资源工作的机会,不要用收割机来修剪花盆里的花。

kill -9 111

暂停进程,对于暂停信号进程自身不能忽略该信号。

kill -19 111 

激活进程,对于激活信号必须发送到已暂停的进程才有效。

kill -18 111 

参考

https://www.computerhope.com/unix/ukill.htm
https://www.linux.org/threads/kill-commands-and-signals.8881/
https://www.geeksforgeeks.org/kill-command-in-linux-with-examples/