码迷,mamicode.com
首页 > 其他好文 > 详细

kill

时间:2019-01-23 12:29:43      阅读:309      评论:0      收藏:0      [点我收藏+]

标签:工具   control   cap   The   mina   use   指定   sleep   sign   

kill - terminate a process

发送指定的信号到相应进程。不指定信号将发送SIGTERM(15)终止指定进程。若仍无法终止该程序可用“-KILL” 参数,其发送的信号为SIGKILL(9) ,将强制结束进程,使用ps命令或者jobs 命令可以查看进程号。

格式:
kill [option] pid

常用参数:

  • -l:打印信号名称列表,或将给定的信号作为参数转换为名称。
  • -s:指定要发送出的信号
  • -u user:指定用户



列出所有信号名称:

[root@node1 ~]# 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



常用信号名称:

信号数字 信号名称 信号描述
1 SIGHUP 终端断线,可以让该进程重新重读配置文件。类似重新启动,ExecReload=/bin/kill -s HUP $PID
2 SIGINT 中断程序,相当于ctrl+c
3 SIGQUIT 退出程序,相当于ctrl+,ExecStop=/bin/kill -s QUIT $PID
9 SIGKILL 强制终止,代表强制中断一个程序的进行,效果和vim非正常退出一样。
15 SIGTERM 正常退出,以正常的方式来终止该程序。由于是正常的终止,所以后续的动作会将他完成。
18 SIGCONT 继续(与SIGSTOP相反,fg/bg命令)
19 SIGSTOP 暂停,相当于ctrl+Z


示例:

[root@node1 ~]# kill -l 15  #将给定的15信号转换成名称
TERM
[root@node1 ~]# kill -l TERM
15


[root@node1 ~]# ps -ef | grep mongod
root       9731   4807  0 21:40 pts/1    00:00:00 tail -f /var/log/mongodb/mongod.log
mongod    10698      1 24 21:58 ?        00:00:03 /usr/bin/mongod -f /etc/mongod.conf
root      10762   5786  0 21:58 pts/2    00:00:00 grep --color=auto mongod
[root@node1 ~]# kill 10698   #结束mongod进程
[root@node1 mongodb]# tail -f /var/log/mongodb/mongod.log  #查看日志,日志能够收到信号为15的信号,因为此测试进程为非忙碌状态,所以直接关闭了。如果直接使用kill -9日志就收不到日志,会直接把进程给杀掉了。
...
2019-01-22T21:58:42.783-0500 I CONTROL  [signalProcessingThread] got signal 15 (Terminated), will terminate after current cmd ends
2019-01-22T21:58:42.784-0500 I NETWORK  [signalProcessingThread] shutdown: going to close listening sockets...
2019-01-22T21:58:42.784-0500 I NETWORK  [signalProcessingThread] removing socket file: /tmp/mongodb-27017.sock
2019-01-22T21:58:42.784-0500 I CONTROL  [signalProcessingThread] Shutting down free monitoring
2019-01-22T21:58:42.785-0500 I FTDC     [signalProcessingThread] Shutting down full-time diagnostic data capture
2019-01-22T21:58:42.787-0500 I STORAGE  [signalProcessingThread] WiredTigerKVEngine shutting down
2019-01-22T21:58:42.876-0500 I STORAGE  [signalProcessingThread] shutdown: removing fs lock...
2019-01-22T21:58:42.877-0500 I CONTROL  [signalProcessingThread] now exiting
2019-01-22T21:58:42.877-0500 I CONTROL  [signalProcessingThread] shutting down with code:0


陷阱trap:

shell脚本中使用trap用来获取signal信号的工具。KILL和STOP这两个信号无法被捕捉。一般来说,在设置信号陷阱时,只会考虑HUP、INT、QUIT、TERM这4个会终止、中断进程的信号。

格式:
trap ‘command|function‘ signal_list

示例:

[root@node1 ~]# vim b.sh
#!/bin/sh

trap ‘echo yes‘ SIGINT     #捕捉INT信号,并输出yes
trap ‘echo today‘ SIGTERM  #捕捉TERM信号,并输出today
for((;;)) do
    sleep 1
    echo "no"
done


[root@node1 ~]# bash b.sh    #执行的过程
^Cyes        #按下ctrl+c,输出了yes,因为shell脚本捕获了中断进程并输出yes,所以中断信号就此消失,并继续执行后续命令
no
no
no
no
no
no
no
today    #重开一个会话,并获取执行此脚本的进程pid号,并使用 kill pid,终止进程,脚本捕捉到信号后输出today
no
...
Killed   #kill -9 pid
[root@node1 ~]# 



总结:
kill命令KILL|9信号只有进程无法正常关闭时,才能使用。HUP|1用来重读配置文件。ctrl+c是信号INT|2

kill

标签:工具   control   cap   The   mina   use   指定   sleep   sign   

原文地址:https://www.cnblogs.com/dance-walter/p/10308070.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!