【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