kill命令的使用


 

常用:

kill -1

SIGHUP - hangup or exit a foreground running process from a terminal

kill -1 向進程發送SIGHUP signal,對於不同類型的進程可能產生不一樣的效果。如果pid對象為daemon,則kill -1 為重新加載配置;如果pid對象為一般進程則為殺掉進程。

kill -1 用來實現reload似乎是約定俗成的。

具體原因參考:https://segmentfault.com/q/1010000002537875http://lilydjwg.vim-cn.com/articles/linux-c/ch33.html

一般的守護進程都會在收到這個信號時重新加載配置。這是一個習慣,因為 SIGHUP 本來的意義對守信進程沒有意義(SIGHUP 是當控制終端失去連接時觸發的信號,而守護進程沒有控制終端,所以根本用不上)。

 

kill -9

kill -9 向進程發送SIGKILL信號,表示進程被終止,進程會立即退出。所以kill -9表示強制殺死該進程,這個信號不能被進程捕獲也不能被忽略。通常殺進程,讓進程退出采用kill -15,急性子的人會直接使用kill -9(斬立決)

 

kill -15

kill -15 向進程發送SIGTERM信號 ,表示請進程退出關閉,一般進程收到后會自行停止運行並退出。

 

 

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

man kill參考:

# man kill

KILL(1)                                                                         User Commands                                                                         KILL(1)

NAME
       kill - terminate a process

SYNOPSIS
       kill [-s signal|-p] [-q sigval] [-a] [--] pid...
       kill -l [signal]

DESCRIPTION
       The command kill sends the specified signal to the specified process or process group.  If no signal is specified, the TERM signal is sent.  The TERM signal will kill
       processes which do not catch this signal.  For other processes, it may be necessary to use the KILL (9) signal, since this signal cannot be caught.

       Most modern shells have a builtin kill function, with a usage rather similar to that of the command described here.  The '-a' and '-p' options, and the possibility to
       specify processes by command name are a local extension.

       If sig is 0, then no signal is sent, but error checking is still performed.

OPTIONS
       pid... Specify the list of processes that kill should signal.  Each pid can be one of five things:

              n      where n is larger than 0.  The process with pid n will be signaled.

              0      All processes in the current process group are signaled.

              -1     All processes with pid larger than 1 will be signaled.

              -n     where  n  is  larger  than  1.   All processes in process group n are signaled.  When an argument of the form '-n' is given, and it is meant to denote a
                     process group, either the signal must be specified first, or the argument must be preceded by a '--' option, otherwise it will be taken as the signal to
                     send.

              commandname
                     All processes invoked using that name will be signaled.

       -s, --signal signal
              Specify the signal to send.  The signal may be given as a signal name or number.

       -l, --list [signal]
              Print a list of signal names, or convert signal given as argument to a name.  The signals are found in /usr/include/linux/signal.h

       -L, --table
              Similar to -l, but will print signal names and their corresponding numbers.

       -a, --all
              Do not restrict the commandname-to-pid conversion to processes with the same uid as the present process.

       -p, --pid
              Specify that kill should only print the process id (pid) of the named processes, and not send any signals.

       -q, --queue sigval
              Use sigqueue(2) rather than kill(2) and the sigval argument is used to specify an integer to be sent with the signal.  If the receiving process has installed a
              handler for this signal using the SA_SIGINFO flag to sigaction(2), then it can obtain this data via the si_value field of the siginfo_t structure.

NOTES
       It is not possible to send a signal to explicitly selected thread in a multithreaded process by kill(2) syscall.  If kill(2) is used to send  a  signal  to  a  thread
       group, then kernel selects arbitrary member of the thread group that has not blocked the signal.  For more details see clone(2) CLONE_THREAD description.

       The  command  kill(1)  as well as syscall kill(2) accepts TID (thread ID, see gettid(2)) as argument.  In this case the kill behavior is not changed and the signal is
       also delivered to the thread group rather than to the specified thread.

SEE ALSO
       bash(1), tcsh(1), kill(2), sigvec(2), signal(7)

AUTHOR
       Taken from BSD 4.4.  The ability to translate process names to process ids was added by Salvatore Valente ⟨svalente@mit.edu⟩.

AVAILABILITY
       The kill command is part of the util-linux package and is available from Linux Kernel Archive ⟨ftp://ftp.kernel.org/pub/linux/utils/util-linux/⟩.

util-linux                                                                        March 2013                                                                          KILL(1)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM