用途
用于终止进程
用法
kill [-s signal|-p] [--] pid...
kill -l [signal]
说明
1.默认发送信号15(请求终止进程,程序可以捕获,操作系统会杀死没有对此做处理的进程),如果需要强制杀死进程,需要传信号9,此信号不能被进程捕获,杀死进程一般传信号15
2.杀死进程可能会丢失数据,需要谨慎操作
3.信号可以传名字也可以是数字,信号可以通过-N方式指定
4.这里所说的kill是指操作系统的kill命令,不是只shell内置的kill命令,一般情况下使用语法都差不多,shell命令会兼容
常用参数
-s signal
指定需要发送的信号,可以是数字也可以是名字
-l [signal name]
列出支持的信号列表,如果后面跟上信号名会显示对应的信号数字
-a
杀死所有匹配的进程,不限制是否和当前的进程uid是否一样
-p
只输出进程号,不发送指定的信号
实践
1.强制删除指定的进程
[root@vm ~]# ps aux | grep t.php
root 31076 99.4 0.4 237040 13240 pts/1 R+ 15:32 7:30 /u01/server/php/bin/php.bin t.php
root 32340 0.0 0.0 103324 916 pts/2 S+ 15:39 0:00 grep t.php
[root@vm ~]# kill -s 9 31076
2.显示信号列表
[root@vm ~]# 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
3.杀死指定命令名的进程
shell内置的kill命令不支持,只能使用系统kill命令
[root@vm ~]# ps aux | grep t.php
root 1466 95.1 0.4 237040 13240 pts/1 R+ 15:47 0:44 /u01/server/php/bin/php.bin t.php
root 1482 95.7 0.4 237040 13244 pts/2 R+ 15:47 0:38 /u01/server/php/bin/php.bin t.php
root 1631 0.0 0.0 103328 928 pts/3 S+ 15:48 0:00 grep t.php
[root@vm ~]# /bin/kill php.bin
[root@vm ~]# ps aux | grep t.php
root 1659 0.0 0.0 103324 900 pts/3 R+ 15:48 0:00 grep t.php
4.杀死多个进程
[root@vm ~]# ps aux | grep t.php
root 1782 98.0 0.4 237040 13240 pts/1 R+ 15:49 0:44 /u01/server/php/bin/php.bin t.php
root 1792 90.6 0.4 237040 13240 pts/2 R+ 15:49 0:38 /u01/server/php/bin/php.bin t.php
root 1960 0.0 0.0 103324 904 pts/3 S+ 15:50 0:00 grep t.php
[root@vm ~]# kill 1782 1792
[root@vm ~]# ps aux | grep t.php
root 2024 0.0 0.0 103324 900 pts/3 S+ 15:50 0:00 grep t.php
5.不杀死进程,只显示进程号
[root@vm ~]# ps aux | grep t.php
root 2523 94.0 0.4 237040 13244 pts/1 R+ 15:53 0:15 /u01/server/php/bin/php.bin t.php
root 2535 92.3 0.4 237040 13240 pts/2 R+ 15:53 0:12 /u01/server/php/bin/php.bin t.php
root 2560 0.0 0.0 103324 900 pts/3 S+ 15:53 0:00 grep t.php
[root@vm ~]# /bin/kill -p php.bin
2523
2535
参考资料
【1】man kill
【2】每天一个linux命令(42):kill命令
http://www.cnblogs.com/peida/archive/2012/12/20/2825837.html
【3】各种信号及其用途-见最后面的附件
http://blog.csdn.net/andy572633/article/details/7211546
【4】列出所有的 Bash Shell 内置命令
http://blog.csdn.net/imxiangzi/article/details/50377904
【5】bash内置命令
http://www.cnblogs.com/blue-sea-sky/p/5506312.html
【6】Linux 进程状态
http://www.cnblogs.com/itech/p/3208261.html
【7】Linux进程间通信
http://www.cnblogs.com/linshui91/archive/2010/09/29/1838770.html