日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

【命令】kill命令

發布時間:2024/6/21 综合教程 40 生活家
生活随笔 收集整理的這篇文章主要介紹了 【命令】kill命令 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

kill命令詳解:

  <---用于向進程發送信號,以實現對進程的管理--->

  語法格式:kill [-s signal|-SIGNAL] pid...

       kill -l [signal]

  其語法格式最終為:kill [參數] 進程號



1、命令功能:

  發送指定的信號到相應進程。不指定型號將發送SIGTERM(15)終止指定進程。如果無法終止該程序可用“-KILL”參數,其發送的信號為SIGKILL(9),將強制結束進程

  使用ps命令或者jobs命令可以查看進程號。root用戶將影響用戶的所有進程,非root用戶只能影響自己的進程

2、命令參數:

  -l信號,若果不加信號的編號參數,則使用“-l”參數會列出全部的信號名稱

  -a當處理當前進程時,不限制命令名和進程號的對應關系

  -p指定kill命令只打印相關進程的進程號,而不發送任何信號

  -s指定發送信號

  -u指定用戶

3、注意事項:

  ·kill命令可以帶信號號碼選項,也可以不帶。如果沒有信號號碼,kill命令就會發出終止信號(15),這個信號可以被進程捕獲,使得進程在退出之前可以清理并釋放資源。也可以用kill向進程發送特定的信號。例如:

   kill-2123,它的效果等同于在前臺運行PID為123的進程時按下Ctrl+C鍵。但是,普通用戶只能使用不帶signal參數的kill命令或最多使用-9信號

  ·kill可以帶有進程ID號作為參數。當用kill向這些進程發送信號時,必須是這些進程的主人。如果試圖撤銷一個沒有權限撤銷的進程或撤銷一個不存在的進程,就會得到一個錯誤信息。

  ·可以向多個進程發信號或終止它們。

  ·當kill成功地發送了信號后,shell會在屏幕上顯示出進程的終止信息。有時這個信息不會馬上顯示,只有當按下Enter鍵使shell的命令提示符再次出現時,才會顯示出來。

  ·應注意,信號使進程強行終止,這常會帶來一些副作用,如數據丟失或者終端無法恢復到正常狀態。發送信號時必須小心,只有在萬不得已時,才用kill信號(9),因為進程不能首先捕獲它。要撤銷所有的后臺作業,可以輸入kill0。因為有些在后臺運行的命令會啟動 多個進程,跟蹤并找到所有要殺掉的進程的PID是件很麻煩的事。這時,使用kill0來終止所有由當前shell啟動的進程,是個有效的方法。

4、每個信號的標識方式: 

  1) 信號的數字標識;
  2) 信號的完整名稱;
  3) 信號的簡寫名稱;

5、使用示例:

示例1:列出所有信號名稱:

 1 [root@test1 ~]# kill -l
 2  1) SIGHUP     2) SIGINT     3) SIGQUIT     4) SIGILL     5) SIGTRAP
 3  6) SIGABRT     7) SIGBUS     8) SIGFPE     9) SIGKILL    10) SIGUSR1
 4 11) SIGSEGV    12) SIGUSR2    13) SIGPIPE    14) SIGALRM    15) SIGTERM
 5 16) SIGSTKFLT    17) SIGCHLD    18) SIGCONT    19) SIGSTOP    20) SIGTSTP
 6 21) SIGTTIN    22) SIGTTOU    23) SIGURG    24) SIGXCPU    25) SIGXFSZ
 7 26) SIGVTALRM    27) SIGPROF    28) SIGWINCH    29) SIGIO    30) SIGPWR
 8 31) SIGSYS    34) SIGRTMIN    35) SIGRTMIN+1    36) SIGRTMIN+2    37) SIGRTMIN+3
 9 38) SIGRTMIN+4    39) SIGRTMIN+5    40) SIGRTMIN+6    41) SIGRTMIN+7    42) SIGRTMIN+8
10 43) SIGRTMIN+9    44) SIGRTMIN+10    45) SIGRTMIN+11    46) SIGRTMIN+12    47) SIGRTMIN+13
11 48) SIGRTMIN+14    49) SIGRTMIN+15    50) SIGRTMAX-14    51) SIGRTMAX-13    52) SIGRTMAX-12
12 53) SIGRTMAX-11    54) SIGRTMAX-10    55) SIGRTMAX-9    56) SIGRTMAX-8    57) SIGRTMAX-7
13 58) SIGRTMAX-6    59) SIGRTMAX-5    60) SIGRTMAX-4    61) SIGRTMAX-3    62) SIGRTMAX-2
14 63) SIGRTMAX-1    64) SIGRTMAX    
15 [root@test1 ~]# 

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

  HUP1終端斷線(無須關閉進程而讓其重讀配置文件)

  INT2 終止正在運行的進程(Ctrl+C)

  QUIT3退出(同Ctrl+)

  TERM15終止運行中的程序,這是友好終止

  KILL9殺死運行中的進程,這是強制終止

  CONT18繼續(與STOP相反,fg/bg命令)

  STOP19暫停(同Ctrl+Z)

示例2:實例2:得到指定信號的數值

[root@test1 ~]# kill -l HUP
1
[root@test1 ~]# kill -l INT
2
[root@test1 ~]# 

示例3:先用ps查找進程,然后kill殺掉

  # ps -ef|grep vim

  # kill PID

[root@test1 ~]# 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@test1 ~]# kill 3268
[root@test1 ~]# kill 3268
-bash: kill: (3268) - 沒有那個進程
[root@test1 ~]#

示例4:徹底殺死進程

【方法一:直接發送信號9徹底殺死】

# ps -ef|grep vim
# kill -9 PID
[root@test1 ~]# 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@test1 ~]# kill -9 3268 
[root@test1 ~]# kill 3268 
-bash: kill: (3268) - 沒有那個進程 
[root@test1 ~]#

【方法二:直接殺死該進程的父進程】

示例5:徹底殺死指定用戶的所有進程

  # kill -9 $(ps -ef | grep username)

示例6:init進程是不殺的

  # kill -9 1

[root@localhost ~]# ps -ef|grep init
root         1     0  0 Nov02 ?        00:00:00 init [3]                  
root     17563 17534  0 17:37 pts/1    00:00:00 grep init
[root@test1 ~]# kill -9 1
[root@ltest1 ~]# kill -HUP 1
[root@test1 ~]# ps -ef|grep init
root         1     0  0 Nov02 ?        00:00:00 init [3]                  
root     17565 17534  0 17:38 pts/1    00:00:00 grep init
[root@test1 ~]# kill -KILL 1
[root@test1 ~]# ps -ef|grep init
root         1     0  0 Nov02 ?        00:00:00 init [3]                  
root     17567 17534  0 17:38 pts/1    00:00:00 grep init
[root@test1 ~]#

說名:init是Linux系統操作中不可缺少的程序之一。所謂的init進程,它是一個由內核啟動的用戶級進程。內核自行啟動(已經被載入內存,開始運行,并已初始化所有的設備驅動程序和數據結構等)之后,就通過啟動一個用戶級程序init的方式,完成引導進程。所以,init始終是第一個進程(其進程編號始終為1)。其它所有進程都是init進程的子孫。init進程是不可殺的!

 

總結

以上是生活随笔為你收集整理的【命令】kill命令的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。