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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

【命令】kill命令

發(fā)布時(shí)間:2024/6/21 综合教程 33 生活家
生活随笔 收集整理的這篇文章主要介紹了 【命令】kill命令 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

kill命令詳解:

  <---用于向進(jìn)程發(fā)送信號(hào),以實(shí)現(xiàn)對(duì)進(jìn)程的管理--->

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

       kill -l [signal]

  其語法格式最終為:kill [參數(shù)] 進(jìn)程號(hào)



1、命令功能:

  發(fā)送指定的信號(hào)到相應(yīng)進(jìn)程。不指定型號(hào)將發(fā)送SIGTERM(15)終止指定進(jìn)程。如果無法終止該程序可用“-KILL”參數(shù),其發(fā)送的信號(hào)為SIGKILL(9),將強(qiáng)制結(jié)束進(jìn)程

  使用ps命令或者jobs命令可以查看進(jìn)程號(hào)。root用戶將影響用戶的所有進(jìn)程,非root用戶只能影響自己的進(jìn)程

2、命令參數(shù):

  -l信號(hào),若果不加信號(hào)的編號(hào)參數(shù),則使用“-l”參數(shù)會(huì)列出全部的信號(hào)名稱

  -a當(dāng)處理當(dāng)前進(jìn)程時(shí),不限制命令名和進(jìn)程號(hào)的對(duì)應(yīng)關(guān)系

  -p指定kill命令只打印相關(guān)進(jìn)程的進(jìn)程號(hào),而不發(fā)送任何信號(hào)

  -s指定發(fā)送信號(hào)

  -u指定用戶

3、注意事項(xiàng):

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

   kill-2123,它的效果等同于在前臺(tái)運(yùn)行PID為123的進(jìn)程時(shí)按下Ctrl+C鍵。但是,普通用戶只能使用不帶signal參數(shù)的kill命令或最多使用-9信號(hào)

  ·kill可以帶有進(jìn)程ID號(hào)作為參數(shù)。當(dāng)用kill向這些進(jìn)程發(fā)送信號(hào)時(shí),必須是這些進(jìn)程的主人。如果試圖撤銷一個(gè)沒有權(quán)限撤銷的進(jìn)程或撤銷一個(gè)不存在的進(jìn)程,就會(huì)得到一個(gè)錯(cuò)誤信息。

  ·可以向多個(gè)進(jìn)程發(fā)信號(hào)或終止它們。

  ·當(dāng)kill成功地發(fā)送了信號(hào)后,shell會(huì)在屏幕上顯示出進(jìn)程的終止信息。有時(shí)這個(gè)信息不會(huì)馬上顯示,只有當(dāng)按下Enter鍵使shell的命令提示符再次出現(xiàn)時(shí),才會(huì)顯示出來。

  ·應(yīng)注意,信號(hào)使進(jìn)程強(qiáng)行終止,這常會(huì)帶來一些副作用,如數(shù)據(jù)丟失或者終端無法恢復(fù)到正常狀態(tài)。發(fā)送信號(hào)時(shí)必須小心,只有在萬不得已時(shí),才用kill信號(hào)(9),因?yàn)檫M(jìn)程不能首先捕獲它。要撤銷所有的后臺(tái)作業(yè),可以輸入kill0。因?yàn)橛行┰诤笈_(tái)運(yùn)行的命令會(huì)啟動(dòng) 多個(gè)進(jìn)程,跟蹤并找到所有要?dú)⒌舻倪M(jìn)程的PID是件很麻煩的事。這時(shí),使用kill0來終止所有由當(dāng)前shell啟動(dòng)的進(jìn)程,是個(gè)有效的方法。

4、每個(gè)信號(hào)的標(biāo)識(shí)方式: 

  1) 信號(hào)的數(shù)字標(biāo)識(shí);
  2) 信號(hào)的完整名稱;
  3) 信號(hào)的簡(jiǎn)寫名稱;

5、使用示例:

示例1:列出所有信號(hào)名稱:

 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種信號(hào)(SIGKILL)才可以無條件終止進(jìn)程,其他信號(hào)進(jìn)程都有權(quán)利忽略。 下面是常用的信號(hào):

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

  INT2 終止正在運(yùn)行的進(jìn)程(Ctrl+C)

  QUIT3退出(同Ctrl+)

  TERM15終止運(yùn)行中的程序,這是友好終止

  KILL9殺死運(yùn)行中的進(jìn)程,這是強(qiáng)制終止

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

  STOP19暫停(同Ctrl+Z)

示例2:實(shí)例2:得到指定信號(hào)的數(shù)值

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

示例3:先用ps查找進(jìn)程,然后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) - 沒有那個(gè)進(jìn)程
[root@test1 ~]#

示例4:徹底殺死進(jìn)程

【方法一:直接發(fā)送信號(hào)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) - 沒有那個(gè)進(jìn)程 
[root@test1 ~]#

【方法二:直接殺死該進(jìn)程的父進(jìn)程】

示例5:徹底殺死指定用戶的所有進(jìn)程

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

示例6:init進(jìn)程是不殺的

  # 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系統(tǒng)操作中不可缺少的程序之一。所謂的init進(jìn)程,它是一個(gè)由內(nèi)核啟動(dòng)的用戶級(jí)進(jìn)程。內(nèi)核自行啟動(dòng)(已經(jīng)被載入內(nèi)存,開始運(yùn)行,并已初始化所有的設(shè)備驅(qū)動(dòng)程序和數(shù)據(jù)結(jié)構(gòu)等)之后,就通過啟動(dòng)一個(gè)用戶級(jí)程序init的方式,完成引導(dǎo)進(jìn)程。所以,init始終是第一個(gè)進(jìn)程(其進(jìn)程編號(hào)始終為1)。其它所有進(jìn)程都是init進(jìn)程的子孫。init進(jìn)程是不可殺的!

 

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。