【linux】kill命令信号总结

kill 命令的详细总结,除了kill -9 还有很多

1.终止进程的一般做法

在运行程序时要对某些程序进程进行终止操作,可以使用kill命令和对应的pid号进行处理,这种方法对于后台运行的程序特别有用:
ps -a 列出所有进程:

  PID TTY          TIME CMD
 2946 pts/20   00:13:11 python
 3523 pts/27   00:00:00 ps

或者使用管道来获取对应应用程序的进程号:
ps | grep python
2946 pts/20 00:13:55 python

随后就可以使用kill来关闭这一程序了:
kill -9 2946

但是,kill命令除了-9外还有很多的用途:
kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]

2.kill 的sigspec的详细内容

在终端中输入kill -l会看到除了-9外还有很多其他的信号:

 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

其中9是立即结束进程的信号不能被阻塞处理,而安全结束进程的信号可以使用15,这个信号可以被阻塞处理。
更详细的Linux 标准信号可以在这里找到。
最早定义的常用信号:

 Signal     Value     Action   Comment
   ──────────────────────────────────────────────────────────────────────
   SIGHUP        1       Term    Hangup detected on controlling terminal
                                 or death of controlling process 终端控制信号
   SIGINT        2       Term    Interrupt from keyboard  键盘终止信号
   SIGQUIT       3       Core    Quit from keyboard   键盘quit信号
   SIGILL        4       Core    Illegal Instruction       
   SIGABRT       6       Core    Abort signal from abort(3)   
   SIGFPE        8       Core    Floating point exception  浮点数错误
   SIGKILL       9       Term    Kill signal    结束信号
   SIGSEGV      11       Core    Invalid memory reference  无效内存,访问错误
   SIGPIPE      13       Term    Broken pipe: write to pipe with no   
                                 readers
   SIGALRM      14       Term    Timer signal from alarm(2)   时钟信号
   SIGTERM      15       Term    Termination signal              终止信号
   SIGUSR1   30,10,16    Term    User-defined signal 1     
   SIGUSR2   31,12,17    Term    User-defined signal 2  
   SIGCHLD   20,17,18    Ign     Child stopped or terminated    子进程结束信号
   SIGCONT   19,18,25    Cont    Continue if stopped
   SIGSTOP   17,19,23    Stop    Stop process        进程终止
   SIGTSTP   18,20,24    Stop    Stop typed at terminal    
   SIGTTIN   21,21,26    Stop    Terminal input for background process
   SIGTTOU   22,22,27    Stop    Terminal output for background process    后端进程信号

ref:
https://linode.com/docs/tools-reference/tools/use-killall-and-kill-to-stop-processes-on-linux/
https://www.zhihu.com/question/23747655
https://www.geeksforgeeks.org/kill-command-in-linux-with-examples/
https://www.linux.com/learn/intro-to-linux/2017/5/how-kill-process-command-line
https://stackoverflow.com/questions/1624691/linux-kill-background-task/1624730
https://blog.csdn.net/king16304/article/details/52211206
https://blog.csdn.net/Shawei_/article/details/81288938

posted @ 2019-06-17 12:37  hitrjj  Views(961)  Comments(0Edit  收藏  举报