Linux之kill命令詳解

@Author  : Spinach | GHB
@Link    : http://blog.csdn.net/bocai8058

概念

kill命令用來刪除執行中的程序或工作。

kill可將指定的信息送至程序。預設的信息爲SIGTERM(15),可將指定程序終止。若仍無法終止該程序,可使用SIGKILL(9)信息嘗試強制刪除程序。程序或工作的編號可利用ps指令或job指令查看。

語法、選項和參數

語法

kill (選項) (參數)

選項

-a:當處理當前進程時,不限制命令名和進程號的對應關係;
-l <信息編號>:若不加<信息編號>選項,則-l參數會列出全部的信息名稱;
-p:指定kill 命令只打印相關進程的進程號,而不發送任何信號;
-s <信息名稱或編號>:指定要送出的信息;
-u:指定用戶。

參數

進程或作業識別號:指定要刪除的進程或作業。

例程

# 列出所有信號名稱
[root@localhost local]$ 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

只有第9種信號(SIGKILL)纔可以無條件終止進程,其他信號進程都有權利忽略,下面是常用的信號:

HUP     1    終端斷線
INT     2    中斷(同 Ctrl + C)
QUIT    3    退出(同 Ctrl + \)
TERM   15    終止(默認kill)
KILL    9    強制終止
CONT   18    繼續(與STOP相反, fg/bg命令)
STOP   19    暫停(同 Ctrl + Z)

先用ps查找進程,然後用kill殺掉:

[root@localhost local]$ ps -ef | grep vim
root      3268  2884  0 16:21 pts/1    00:00:00 vim install.log
root      3370  2822  0 16:21 pts/0    00:00:00 grep vim
[root@localhost local]$ kill -9 3268
[root@localhost local]$ kill -9 3268
-bash: kill: (3268) - 沒有那個進程

kill -9、kill -15

kill 與 kill -15

系統會發送一個SIGTERM的信號給對應的程序。當程序接收到該signal後,將會發生以下的事情:

  • 程序立刻停止;
  • 當程序釋放相應資源後再停止;
  • 程序可能仍然繼續運行;

大部分程序接收到SIGTERM信號後,會先釋放自己的資源,然後在停止。但是也有程序可以在接受到信號量後,做一些其他的事情,並且這些事情是可以配置的。如果程序正在等待IO,可能就不會立馬做出相應。也就是說,SIGTERM多半是會被阻塞的、忽略。

kill -9

kill -9 pid等於kill -s 9 pid,表示強制,儘快終止一個進程。多半admin會用這個命令。

因此kill - 9表示強制殺死該進程;與SIGTERM相比,這個信號不能被捕獲或忽略,同時接收這個信號的進程在收到這個信號時不能執行任何清理。

引用:http://man.linuxde.net/kill | https://www.cnblogs.com/liuhouhou/p/5400540.html


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章