kill
命令向指定的pid
进程发送信号,若是不指定要发送的signal
信号,则默认状况下signal
是SIGTERM
,它会终止进程,要列出全部可用信号,可使用-l
选项获取Linux
信号列表,常用的信号包括HUP
、INT
、KILL
、STOP
、CONT
和0
,能够经过三种方式指定信号: 按数字例如-9
,带有SIG
前缀例如-SIGKILL
,不带SIG
前缀例如-KILL
。负PID
值用于指示过程组ID
,若是传递了进程组ID
,则该组中的全部进程都将接收到该信号,PID
为-1
是特殊的,其指示除两个之外的全部进程,kill
进程自己和init
即PID 1
,其是系统上全部进程的父进程,将-1
指定为目标会将信号发送到除这两个之外的全部进程。linux
kill pid ... kill {-signal | -s signal} pid ... kill {-l | --list[=signal] | -L | --table}
-signal, -s signal
: 要发送的信号的名称、缩写名或编号,前面有破折号,例如-SIGTERM
、-TERM
、-15
等,要查看可用信号的列表可使用kill -l
。pid
: 数字进程ID
,若是不肯定某个进程的PID
是什么,可使用ps
命令将其列出例如ps -aux
,一般会配合管道与grep
使用例如查看nginx
相关的进程 ps -aux | grep nginx
。-l, --list[=signal]
: 列出可用的信号名称,用-l
或--list
列出全部信号名称,使用--list = signal
,可将数字转换为其信号名称。-L, --table
: 在表格中列出可用的信号名称和编号。下列的某些信号是不能使用的,由于系统有可能不支持这些信号,或者这些信号已中断,详情能够实际查阅系统的kill -l
命令。每一个系统都有信号1
、3
、9
和15
,这些是最多见的信号。终止信号不只用于关闭锁定的应用程序,还能够阻止软件执行不容许的任务,这意味着其中一些终止信号是安全的一部分,另外kill
命令不只中止/
终止进程,并且还暂停,继续和从新启动进程。nginx
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
SIGHUP
: SIGHUP
信号用于断开进程与父进程的链接,这也能够用于从新启动进程,这对于内存泄漏的守护程序颇有用。SIGINT
: 该信号与按Ctrl+C
相同,在某些系统上delete + break
会向进程发送相同的信号,该进程被中断并中止,可是该进程自身能够忽略此信号。SIGQUIT
: 这相似于SIGINT
,但因为QUIT
字符一般是由Ctrl+\
来控制,进程在收到SIGQUIT
退出时会产生core
文件, 在这个意义上相似于一个程序错误信号。SIGILL
: 当一个进程执行一个错误的、禁止的或未知的功能时,系统向该进程发送SIGILL
信号,这是表明非法操做的信号。SIGTRAP
: 此信号用于调试目的,当某个进程执行了某个操做或知足了调试器正在等待的条件时,此信号将被发送到该进程。SIGABRT
: 该终止信号是停止信号,一般进程会在自身上发出此终止信号。SIGBUS
: 当一个进程被发送SIGBUS
信号时,是由于该进程致使了一个总线错误,一般这些总线错误是因为进程试图使用假物理地址或进程的内存对齐设置不正确形成的。SIGFPE
: 被零除的进程使用SIGFPE
终止。SIGKILL
: SIGKILL
信号强制进程当即中止执行,程序不能忽略该信号,此过程也没法清除。SIGUSR1
: 这表示用户定义的条件,用户能够经过在sigusr1.c
中编程命令来设置此信号。SIGSEGV
: 当应用程序有分段冲突时,这个信号被发送到进程。SIGUSR2
: 这表示用户定义的条件。SIGPIPE
: 当进程尝试写入缺乏与读取器链接的一端的管道时,此信号将发送到进程,读取器是在管道末端读取数据的过程。SIGALRM
: 当实时或时钟计时器到期时,将发送SIGALRM
。SIGTERM
: 该信号请求进程中止运行,该信号能够被程序自身忽略,该过程有时间正常关闭,当程序正常关闭时,这意味着它有时间保存进度并释放资源,换句话说即它不被迫中止。SIGCHLD
: 当父进程丢失其子进程时,将向父进程发送SIGCHLD
信号,这将清理子进程使用的资源,子进程指的是由另外一个称为父进程的进程启动的进程。SIGCONT
: 要使进程在被SIGTSTP
或SIGSTOP
信号暂停后继续执行,须要将SIGCONT
信号发送到已暂停的进程,这是CONTiNUE SIGNAL
,该信号对Unix
做业控制执行后台任务颇有帮助。SIGSTOP
: 该信号使操做系统暂停进程的执行,进程自身不能忽略该信号。SIGTSTP
: 这个信号相似于按下Ctrl+Z
,它向包含进程的终端发出请求,请求进程暂时中止,进程自身能够忽略该信号。SIGTTIN
: 当进程试图从tty
终端读取数据时,进程接收到这个信号。SIGTTOU
: 当某个进程尝试向tty
终端进行写操做时,该进程将收到此信号。SIGURG
: 当进程中有紧急数据要读取或数据很是大时,SIGURG
信号将发送到该进程。SIGXCPU
: 当某个进程在分配的时间以后使用CPU
时,系统将向该进程发送该信号,SIGXCPU
的行为就像一个警告,该进程有时间保存进度(若是可能)并在系统使用SIGKILL
终止该进程以前将其关闭。SIGXFSZ
: 文件系统对文件的大小有限制,当程序尝试违反此限制时,系统将发送该过程SIGXFSZ
信号。SIGVTALRM
: SIGVTALRM
在进程使用的CPU
时间结束时发送。SIGPROF
: 当进程以及由系统表明进程使用的CPU
时间过去时,将发送SIGPROF
信号。SIGWINCH
: 当进程在更改其大小的终端中时,该进程将接收此信号。SIGIO
: SIGPOLL
的别名或至少表现得很像SIGPOLL
。SIGPWR
: 电源故障将致使系统将该信号发送到进程,若是系统仍在运行。SIGSYS
: 为系统调用提供无效参数的进程将接收此信号。SIGRTMIN*
: 这是一组在系统之间变化的信号,它们被标记为SIGRTMIN + 1
、SIGRTMIN + 2
、SIGRTMIN + 3
、...
,一般最多15
个,这些是用户定义的信号,它们必须在Linux
内核的源代码中进行编程。SIGRTMAX*
: 这是一组在系统之间变化的信号,它们被标记为SIGRTMAX-1
、SIGRTMAX-2
、SIGRTMAX-3
、...
,一般最多14
个,这些是用户定义的信号,它们必须在Linux
内核的源代码中进行编程。SIGEMT
: 指示一个实现定义的硬件故障。SIGINFO
: 终端有时可能会向进程发送状态请求,发生这种状况时,进程也将收到此信号。SIGLOST
: 试图访问锁定文件的进程将收到此信号。SIGPOLL
: 当进程引发异步I/O
事件时,会向该进程发送SIGPOLL
信号。要显示全部可用信号,查看信号的详细信息可使用man
命令,例如信号7 SIGBUS
即便用man 7 signal
。git
kill -l
在表格中列出可用的信号名称和编号。github
kill -L
终端断线,从新加载配置文件,平滑重启。shell
kill -1 111
通知进程关闭,使进程自行关闭,这个关闭是安全、干净地退出,若是kill
命令后直接加进程的pid
号默认选项为-15
,这个信号是能够被进程自身忽略并继续执行自身的,即该信号是能够被阻塞和忽略的。编程
kill -15 111
强行中断当前程序的执行,相似Ctrl+C
按键用以结束进程的结果,该信号是能够被阻塞和忽略的。安全
kill -2 111
退出进程,相似Ctrl+\
按键用以结束进程的结果,该信号是能够被阻塞和忽略的。异步
kill -3 111
强行关闭进程,-9
信号是无条件终止,这个信号不能被捕获或忽略,同时接收这个信号的进程在收到这个信号时不能执行任何清理,该信号是不能够被阻塞和忽略的,固然一般是不建议使用kill -9
的,应该尝试使用-15
以及-2
给目标进程一个清理自身资源工做的机会,不要用收割机来修剪花盆里的花。操作系统
kill -9 111
暂停进程,对于暂停信号进程自身不能忽略该信号。unix
kill -19 111
激活进程,对于激活信号必须发送到已暂停的进程才有效。
kill -18 111
https://github.com/WindrunnerMax/EveryDay
https://www.computerhope.com/unix/ukill.htm https://www.linux.org/threads/kill-commands-and-signals.8881/ https://www.geeksforgeeks.org/kill-command-in-linux-with-examples/