kill:终止进程

xiaohai 2021-05-14 10:29:47 2218人围观 标签: Linux 
简介kill命令用于终止进程
说明

  kill命令用于终止进程

格式

  kill [option] [pid]

常用参数
-l:列出全部的信号名称
-p:指定kill命令只打印相关进程的进程号,而不发送任何信号
-s:指定要发送的信号
示例

1、列出所有信号的名称

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

注意:kill指令默认使用的信号是15,用于结束进程。如果进程忽略该信号,可以使用信号9强制终止进程。

2、终止进程

#首先通过ps来获取进程号
[root@localhost ~]# ps -aux|grep nginx
root       1580  0.0  0.1  45896  1108 ?        Ss   11:41   0:00 nginx: master process /apps/nginx/sbin/nginx
nginx      1589  0.0  0.2  46756  2628 ?        S    11:41   0:00 nginx: worker process
nginx      2168  0.0  2.1 374796 22004 ?        S    11:41   0:00 php-fpm: pool www
nginx      2169  0.0  1.9 374792 19992 ?        S    11:41   0:00 php-fpm: pool www
root       2994  0.0  0.0 112660   976 pts/1    S+   21:13   0:00 grep --color=auto nginx


#终止进程的几种方式
[root@localhost ~]# kill 1580 #kill默认使用的信号是15,这种格式也是最常用的

[root@localhost ~]# kill -s 15 1580 #使用-s参数明确指定信号,和kill pid效果一样

[root@localhost ~]# kill -15 1580 #-s 15可以写成-15

#如果上面的方法无法终止进程,可以使用-9强制终止进程
[root@localhost ~]# kill -9 1580

3、特殊信号0说明

#kill -0 pid表示不发送任何信号给pid,但是会对pid是否存在做检验,如果pid进程存在,则返回0,否则返回1.
[root@localhost ~]# kill -0 1580 #存在的进程pid
[root@localhost ~]# echo $?
0
[root@localhost ~]# kill -0 1582 #不存在的进程pid
-bash: kill: (1582) - No such process