轉載:https://www.cnblogs.com/yucongblog/p/6568374.html
大家對kill -9 肯定非常熟悉,在工作中也經常用到。特別是你去重啟tomcat時。可是多半看來,我們對-9的理解只是表面而已。
很少有人(包括我)認真的去了解一下 kill -n 這個n到底是什么東東。自我批評一下。
好吧。我們來好好的認識一下這個熟悉的陌生人。
1)kill
從help中可以清晰的看到 -n 指的是 信號編號,那問題來了,“信號編號”是哪位大神???
2)kill -l(查看Linux/Unix的信號變量)
這么多呀!! 今天就單獨說一下SIGKILL和SIGTERM
3)(kill pid) 、( kill -15 pid)
系統會發送一個SIGTERM的信號給對應的程序。當程序接收到該signal后,將會發生以下的事情
- 程序立刻停止
- 當程序釋放相應資源后再停止
- 程序可能仍然繼續運行
大部分程序接收到SIGTERM信號后,會先釋放自己的資源,然后在停止。但是也有程序可以在接受到信號量后,做一些其他的事情,並且這些事情是可以
配置的。如果程序正在等待IO,可能就不會立馬做出相應。
也就是說,SIGTERM多半是會被阻塞的、忽略。
4)kill -9 pid
你不是可以不響應 SIGTERM嗎??那好,我給你下一道必殺令,我看你還不乖乖的。多半admin會用這個命令
不過,也不是所有的程序都會乖乖聽話,總有那些狀態下的程序無法立刻相應。
附錄:
linux signals
Signal Name | Number | Description |
SIGHUP | 1 | Hangup (POSIX) |
SIGINT | 2 | Terminal interrupt (ANSI) |
SIGQUIT | 3 | Terminal quit (POSIX) |
SIGILL | 4 | Illegal instruction (ANSI) |
SIGTRAP | 5 | Trace trap (POSIX) |
SIGIOT | 6 | IOT Trap (4.2 BSD) |
SIGBUS | 7 | BUS error (4.2 BSD) |
SIGFPE | 8 | Floating point exception (ANSI) |
SIGKILL | 9 | Kill(can't be caught or ignored) (POSIX) |
SIGUSR1 | 10 | User defined signal 1 (POSIX) |
SIGSEGV | 11 | Invalid memory segment access (ANSI) |
SIGUSR2 | 12 | User defined signal 2 (POSIX) |
SIGPIPE | 13 | Write on a pipe with no reader, Broken pipe (POSIX) |
SIGALRM | 14 | Alarm clock (POSIX) |
SIGTERM | 15 | Termination (ANSI) |
SIGSTKFLT | 16 | Stack fault |
SIGCHLD | 17 | Child process has stopped or exited, changed (POSIX) |
SIGCONT | 18 | Continue executing, if stopped (POSIX) |
SIGSTOP | 19 | Stop executing(can't be caught or ignored) (POSIX) |
SIGTSTP | 20 | Terminal stop signal (POSIX) |
SIGTTIN | 21 | Background process trying to read, from TTY (POSIX) |
SIGTTOU | 22 | Background process trying to write, to TTY (POSIX) |
SIGURG | 23 | Urgent condition on socket (4.2 BSD) |
SIGXCPU | 24 | CPU limit exceeded (4.2 BSD) |
SIGXFSZ | 25 | File size limit exceeded (4.2 BSD) |
SIGVTALRM | 26 | Virtual alarm clock (4.2 BSD) |
SIGPROF | 27 | Profiling alarm clock (4.2 BSD) |
SIGWINCH | 28 | Window size change (4.3 BSD, Sun) |
SIGIO | 29 | I/O now possible (4.2 BSD) |
SIGPWR | 30 | Power failure restart (System V) |