linux中kill命令的參數(shù)以及示例分析,相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。
創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括巫山網(wǎng)站建設(shè)、巫山網(wǎng)站制作、巫山網(wǎng)頁制作以及巫山網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,巫山網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到巫山省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
kill號(hào)令用于終止指定的過程(terminate a process),是Unix/Linux下過程經(jīng)管的常用號(hào)令。凡是,我們?cè)陧氁K止某個(gè)或某些過程時(shí),先應(yīng)用ps/pidof/pstree/top等對(duì)象獲取過程PID,然后應(yīng)用kill號(hào)令來殺掉該過程。kill號(hào)令的別的一個(gè)用處就是向指定的過程或過程組發(fā)送旌旗燈號(hào)(The command kill sends the specified signal to the specified process or process group),或者斷定過程號(hào)為PID的過程是否還在。比如,有很多法度都把SIGHUP旌旗燈號(hào)作為從頭讀取設(shè)備文件的觸發(fā)前提。
一 常用參數(shù)
格式:kill <pid>
格式:kill -TERM <pid>
發(fā)送SIGTERM旌旗燈號(hào)到指定過程,若是過程沒有捕獲該旌旗燈號(hào),則過程終止(If no signal is specified, the TERM signal is sent. The TERM signal will kill processes which do not catch this signal.)
格式:kill -l
列出所有旌旗燈號(hào)名稱(Print a list of signal names. These are found in /usr/include/linux/signal.h)。只有第9種旌旗燈號(hào)(SIGKILL)才可以無前提終止過程,其他旌旗燈號(hào)過程都有權(quán)力忽視。下面是常用的旌旗燈號(hào):
HUP 1 終端斷線
INT 2 中斷(同 Ctrl + C)
QUIT 3 退出(同 Ctrl + )
TERM 15 終止
KILL 9 強(qiáng)迫終止
CONT 18 持續(xù)(與STOP相反, fg/bg號(hào)令)
STOP 19 暫停(同 Ctrl + Z)
格式:kill -l <signame>
顯示指定旌旗燈號(hào)的數(shù)值。
格式:kill -9 <pid>
格式:kill -KILL <pid>
強(qiáng)迫殺掉指定過程,無前提終止指定過程。
格式:kill %<jobid>
格式:kill -9 %<jobid>
殺掉指定的任務(wù)(應(yīng)用jobs號(hào)令可以列出)
格式:kill -QUIT <pid>
格式:kill -3 <pid>
使得法度正常的退出。
killall號(hào)令
killall號(hào)令殺死同一過程組內(nèi)的所有過程。其容許指定要終止的過程的名稱,而非PID。
# killall httpd
二、示例
1)先用ps查找過程,然后用kill殺掉。
[root@new55 ~]# ps -ef|grep vim
root 3368 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@new55 ~]# kill 3368
[root@new55 ~]# kill 3368
-bash: kill: (3368) - 沒有那個(gè)過程
三、kill signal
01 | $ kill -l |
02 | 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL |
03 | 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE |
04 | 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 |
05 | 13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT |
06 | 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP |
07 | 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU |
08 | 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH |
09 | 29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN |
10 | 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4 |
11 | 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8 |
12 | 43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 |
13 | 47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 |
14 | 51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10 |
15 | 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6 |
16 | 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2 |
17 | 63) SIGRTMAX-1 64) SIGRTMAX |
列表中,編號(hào)為1 ~ 31的信號(hào)為傳統(tǒng)UNIX支持的信號(hào),是不可靠信號(hào)(非實(shí)時(shí)的),編號(hào)為32 ~ 63的信號(hào)是后來擴(kuò)充的,稱做可靠信號(hào)(實(shí)時(shí)信號(hào))。不可靠信號(hào)和可靠信號(hào)的區(qū)別在于前者不支持排隊(duì),可能會(huì)造成信號(hào)丟失,而后者不會(huì)。
下面我們對(duì)編號(hào)小于SIGRTMIN的信號(hào)進(jìn)行討論。
1) SIGHUP
本信號(hào)在用戶終端連接(正常或非正常)結(jié)束時(shí)發(fā)出, 通常是在終端的控制進(jìn)程結(jié)束時(shí), 通知同一session內(nèi)的各個(gè)作業(yè), 這時(shí)它們與控制終端不再關(guān)聯(lián)。
登錄Linux時(shí),系統(tǒng)會(huì)分配給登錄用戶一個(gè)終端(Session)。在這個(gè)終端運(yùn)行的所有程序,包括前臺(tái)進(jìn)程組和后臺(tái)進(jìn)程組,一般都屬于這個(gè) Session。當(dāng)用戶退出Linux登錄時(shí),前臺(tái)進(jìn)程組和后臺(tái)有對(duì)終端輸出的進(jìn)程將會(huì)收到SIGHUP信號(hào)。這個(gè)信號(hào)的默認(rèn)操作為終止進(jìn)程,因此前臺(tái)進(jìn) 程組和后臺(tái)有終端輸出的進(jìn)程就會(huì)中止。不過可以捕獲這個(gè)信號(hào),比如wget能捕獲SIGHUP信號(hào),并忽略它,這樣就算退出了Linux登錄,wget也 能繼續(xù)下載。
此外,對(duì)于與終端脫離關(guān)系的守護(hù)進(jìn)程,這個(gè)信號(hào)用于通知它重新讀取配置文件。
2) SIGINT
程序終止(interrupt)信號(hào), 在用戶鍵入INTR字符(通常是Ctrl-C)時(shí)發(fā)出,用于通知前臺(tái)進(jìn)程組終止進(jìn)程。
3) SIGQUIT
和SIGINT類似, 但由QUIT字符(通常是Ctrl-)來控制. 進(jìn)程在因收到SIGQUIT退出時(shí)會(huì)產(chǎn)生core文件, 在這個(gè)意義上類似于一個(gè)程序錯(cuò)誤信號(hào)。
4) SIGILL
執(zhí)行了非法指令. 通常是因?yàn)榭蓤?zhí)行文件本身出現(xiàn)錯(cuò)誤, 或者試圖執(zhí)行數(shù)據(jù)段. 堆棧溢出時(shí)也有可能產(chǎn)生這個(gè)信號(hào)。
5) SIGTRAP
由斷點(diǎn)指令或其它trap指令產(chǎn)生. 由debugger使用。
6) SIGABRT
調(diào)用abort函數(shù)生成的信號(hào)。
7) SIGBUS
非法地址, 包括內(nèi)存地址對(duì)齊(alignment)出錯(cuò)。比如訪問一個(gè)四個(gè)字長(zhǎng)的整數(shù), 但其地址不是4的倍數(shù)。它與SIGSEGV的區(qū)別在于后者是由于對(duì)合法存儲(chǔ)地址的非法訪問觸發(fā)的(如訪問不屬于自己存儲(chǔ)空間或只讀存儲(chǔ)空間)。
8) SIGFPE
在發(fā)生致命的算術(shù)運(yùn)算錯(cuò)誤時(shí)發(fā)出. 不僅包括浮點(diǎn)運(yùn)算錯(cuò)誤, 還包括溢出及除數(shù)為0等其它所有的算術(shù)的錯(cuò)誤。
9) SIGKILL
用來立即結(jié)束程序的運(yùn)行. 本信號(hào)不能被阻塞、處理和忽略。如果管理員發(fā)現(xiàn)某個(gè)進(jìn)程終止不了,可嘗試發(fā)送這個(gè)信號(hào)。
10) SIGUSR1
留給用戶使用
11) SIGSEGV
試圖訪問未分配給自己的內(nèi)存, 或試圖往沒有寫權(quán)限的內(nèi)存地址寫數(shù)據(jù).
12) SIGUSR2
留給用戶使用
13) SIGPIPE
管道破裂。這個(gè)信號(hào)通常在進(jìn)程間通信產(chǎn)生,比如采用FIFO(管道)通信的兩個(gè)進(jìn)程,讀管道沒打開或者意外終止就往管道寫,寫進(jìn)程會(huì)收到SIGPIPE信號(hào)。此外用Socket通信的兩個(gè)進(jìn)程,寫進(jìn)程在寫Socket的時(shí)候,讀進(jìn)程已經(jīng)終止。
14) SIGALRM
時(shí)鐘定時(shí)信號(hào), 計(jì)算的是實(shí)際的時(shí)間或時(shí)鐘時(shí)間. alarm函數(shù)使用該信號(hào).
15) SIGTERM
程序結(jié)束(terminate)信號(hào), 與SIGKILL不同的是該信號(hào)可以被阻塞和處理。通常用來要求程序自己正常退出,shell命令kill缺省產(chǎn)生這個(gè)信號(hào)。如果進(jìn)程終止不了,我們才會(huì)嘗試SIGKILL。
17) SIGCHLD
子進(jìn)程結(jié)束時(shí), 父進(jìn)程會(huì)收到這個(gè)信號(hào)。
如果父進(jìn)程沒有處理這個(gè)信號(hào),也沒有等待(wait)子進(jìn)程,子進(jìn)程雖然終止,但是還會(huì)在內(nèi)核進(jìn)程表中占有表項(xiàng),這時(shí)的子進(jìn)程稱為僵尸進(jìn)程。這種情 況我們應(yīng)該避免(父進(jìn)程或者忽略SIGCHILD信號(hào),或者捕捉它,或者wait它派生的子進(jìn)程,或者父進(jìn)程先終止,這時(shí)子進(jìn)程的終止自動(dòng)由init進(jìn)程來接管)。
18) SIGCONT
讓一個(gè)停止(stopped)的進(jìn)程繼續(xù)執(zhí)行. 本信號(hào)不能被阻塞. 可以用一個(gè)handler來讓程序在由stopped狀態(tài)變?yōu)槔^續(xù)執(zhí)行時(shí)完成特定的工作. 例如, 重新顯示提示符...
19) SIGSTOP
停止(stopped)進(jìn)程的執(zhí)行. 注意它和terminate以及interrupt的區(qū)別:該進(jìn)程還未結(jié)束, 只是暫停執(zhí)行. 本信號(hào)不能被阻塞, 處理或忽略.
20) SIGTSTP
停止進(jìn)程的運(yùn)行, 但該信號(hào)可以被處理和忽略. 用戶鍵入SUSP字符時(shí)(通常是Ctrl-Z)發(fā)出這個(gè)信號(hào)
21) SIGTTIN
當(dāng)后臺(tái)作業(yè)要從用戶終端讀數(shù)據(jù)時(shí), 該作業(yè)中的所有進(jìn)程會(huì)收到SIGTTIN信號(hào). 缺省時(shí)這些進(jìn)程會(huì)停止執(zhí)行.
22) SIGTTOU
類似于SIGTTIN, 但在寫終端(或修改終端模式)時(shí)收到.
23) SIGURG
有"緊急"數(shù)據(jù)或out-of-band數(shù)據(jù)到達(dá)socket時(shí)產(chǎn)生.
24) SIGXCPU
超過CPU時(shí)間資源限制. 這個(gè)限制可以由getrlimit/setrlimit來讀取/改變。
25) SIGXFSZ
當(dāng)進(jìn)程企圖擴(kuò)大文件以至于超過文件大小資源限制。
26) SIGVTALRM
虛擬時(shí)鐘信號(hào). 類似于SIGALRM, 但是計(jì)算的是該進(jìn)程占用的CPU時(shí)間.
27) SIGPROF
類似于SIGALRM/SIGVTALRM, 但包括該進(jìn)程用的CPU時(shí)間以及系統(tǒng)調(diào)用的時(shí)間.
28) SIGWINCH
窗口大小改變時(shí)發(fā)出.
29) SIGIO
文件描述符準(zhǔn)備就緒, 可以開始進(jìn)行輸入/輸出操作.
30) SIGPWR
Power failure
31) SIGSYS
非法的系統(tǒng)調(diào)用。
在以上列出的信號(hào)中,程序不可捕獲、阻塞或忽略的信號(hào)有:SIGKILL,SIGSTOP
不能恢復(fù)至默認(rèn)動(dòng)作的信號(hào)有:SIGILL,SIGTRAP
默認(rèn)會(huì)導(dǎo)致進(jìn)程流產(chǎn)的信號(hào)有:SIGABRT,SIGBUS,SIGFPE,SIGILL,SIGIOT,SIGQUIT,SIGSEGV,SIGTRAP,SIGXCPU,SIGXFSZ
默認(rèn)會(huì)導(dǎo)致進(jìn)程退出的信號(hào)有:SIGALRM,SIGHUP,SIGINT,SIGKILL,SIGPIPE,SIGPOLL,SIGPROF,SIGSYS,SIGTERM,SIGUSR1,SIGUSR2,SIGVTALRM
默認(rèn)會(huì)導(dǎo)致進(jìn)程停止的信號(hào)有:SIGSTOP,SIGTSTP,SIGTTIN,SIGTTOU
默認(rèn)進(jìn)程忽略的信號(hào)有:SIGCHLD,SIGPWR,SIGURG,SIGWINCH
此外,SIGIO在SVR4是退出,在4.3BSD中是忽略;SIGCONT在進(jìn)程掛起時(shí)是繼續(xù),否則是忽略,不能被阻塞。
看完上述內(nèi)容,你們掌握linux中kill命令的參數(shù)以及示例分析的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
網(wǎng)頁名稱:linux中kill命令的參數(shù)以及示例分析
文章分享:http://aaarwkj.com/article8/ihhoop.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、虛擬主機(jī)、網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)站策劃、微信公眾號(hào)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)