kill命令详解
linux kill命令详解
简介
kill
发送一个特定的信号 (signal
) 给进程id为pid
的进程,根据该信号而做特定的动作,若没有指定,默认是送出终止 (TERM) 的信号
命令行
kill [-s signal|-p] [-q sigval] [-a] [--] pid...
kill -l [signal]
kill
向指定进程或进程组发送指定的信号。如果没有指定,则发送TERM
信号。TERM
信号将终止没有捕获到该信号的进程。对于其他进程,可能需要使用KILL(9)信号,因为这个信号不能被捕获。
大多数现代shell都有一个内置的kill
函数,其用法与这里描述的命令相当相似。‘-a
’和’-p
’选项以及通过命令名指定进程的可能性是本地扩展。
如果signal
值为0,则不发送信号,但仍然进行错误检查。
使用信号的name时,不需要把SIG 加上,例如:
kill -HUP pid
,kill -KILL pid
参数说明
pid
指定信号要发送的进程id
列表。可以是以下值
n
:大于0。进程id为 n 的进程。0
:当前进程组的所有进程。-1
:进程id 大于 1的所有进程。-n
:当 n 大于 1,进程组n 内的所有进程都会被发送信号。当给出一个’-n
’形式的参数时,它表示一个进程组,要么信号必须先指定,要么参数前必须有一个’–'选项,否则它将被视为要发送的信号。
-s, --signal
要发送的信号,可以是name
或数字。
-l, --list
列出所有的信号name。如果指定的是信号数字,则返回信号name。
-L, --table
类似 -l
, 列出所有的信号name和数字。
-a, --all
不要将commandname-to-pid
转换 限制 为与当前进程具有相同uid
的进程。而是所有 uid
下的进程。 这个主要针对的是commandname
。
-p, --pid
指定kill
只打印指定进程的进程id (pid
),而不发送任何信号。
-q, --queue
所有信号
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
常用信号
15) SIGTERM
:正常方式杀死进程:(这种方式可能会存在一些问题:进程的子进程可能会无法终止,并继续消耗系统资源)9 )SIGKILL
:强制杀死进程2) SIGINT
:中断信号 相当Ctrl+C
:18) SIGCONT
:挂起进程重新执行19) SIGSTOP
:挂起进程,相当Ctrl+Z
。
kill -9
和 kill -15
的区别
当使用kill -15
时,系统会发送一个SIGTERM
的信号给对应的程序。当程序接收到该信号后,具体要如何处理是自己可以决定的。这时候,应用程序可以选择:
-
立即停止程序
-
释放响应资源后停止程序
-
忽略该信号,继续执行程序
和kill -15
相比,kill -9
就相对强硬一点,系统会发出SIGKILL
信号,他要求接收到该信号的程序应该立即结束运行,不能被阻塞或者忽略。
JVM
的shutdownHook
在SIGTERM
下有效,在SIGKILL
下是无效的。
kill -2
也会触发。
更多推荐
所有评论(0)