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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

RHEL6基础之十八Linux中Kill进程的方法

發(fā)布時間:2025/3/20 linux 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RHEL6基础之十八Linux中Kill进程的方法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Linux中的kill命令用來終止指定的進(jìn)程(terminate?a?process)的運行,是Linux下進(jìn)程管理的常用命令。工作原理是向Linux系統(tǒng)的內(nèi)核發(fā)送一個系統(tǒng)操作信號和某個程序的進(jìn)程標(biāo)識號,然后系統(tǒng)內(nèi)核就可以對進(jìn)程標(biāo)識號指定的進(jìn)程進(jìn)行操作,通常,終止一個前臺進(jìn)程可以使用Ctrl+C鍵,但是,對于一個后臺進(jìn)程就須用kill命令來終止,我們就需要先使用ps/pgrep/pidof/pstree/top等工具獲取進(jìn)程PID,然后使用kill命令來殺掉該進(jìn)程。kill命令是通過向進(jìn)程發(fā)送指定的信號來結(jié)束相應(yīng)進(jìn)程的。在默認(rèn)情況下,采用編號為15的TERM信號。TERM信號將終止所有不能捕獲該信號的進(jìn)程。對于那些可以捕獲該信號的進(jìn)程就要用編號為9的kill信號,強(qiáng)行“殺掉”該進(jìn)程。?

一、獲取進(jìn)程PID

1、ps -ef

[root@justin?conf]#?ps?-ef UID????????PID??PPID??C?STIME?TTY??????????TIME?CMD root?????????1?????0??0?14:09??????????00:00:02?/sbin/init root?????????2?????0??0?14:09??????????00:00:00?[kthreadd] root?????????3?????2??0?14:09??????????00:00:00?[migration/0] root?????????4?????2??0?14:09??????????00:00:00?[ksoftirqd/0] root?????????5?????2??0?14:09??????????00:00:00?[migration/0]

2、ps -aux

[root@justin?conf]#?ps?aux USER???????PID?%CPU?%MEM????VSZ???RSS?TTY??????STAT?START???TIME?COMMAND root?????????1??0.4??0.1???2872??1424??????????Ss???14:09???0:02?/sbin/init root?????????2??0.0??0.0??????0?????0??????????S????14:09???0:00?[kthreadd] root?????????3??0.0??0.0??????0?????0??????????S????14:09???0:00?[migration/0] root?????????4??0.0??0.0??????0?????0??????????S????14:09???0:00?[ksoftirqd/0]

3、精確查找進(jìn)程PID

3.1通過管道符、grep

[root@localhost?~]#?ps?aux|grep?firefox root??????2276??3.4??5.7?318708?59268??????????Sl???04:57???0:02?/usr/lib/firefox-3.6.18/firefox-bin root??????2344??0.0??0.0???4356???728?pts/0????S+???04:58???0:00?grep?firefox [root@localhost?~]#

3.2、pgrep

pgrep的p表明了這個命令是專門用于進(jìn)程查詢的grep

[root@localhost?~]#?pgrep?firefox 2276 [root@localhost?~]#

3.3、pidof--pid of xx

pid of xx,字面翻譯過來就是 xx的PID,和pgrep相比稍顯不足的是,pidof必須給出進(jìn)程的全名

[root@localhost?~]#?pidof?firefox-bin 2276 [root@localhost?~]#

二、Kill命令結(jié)束指定進(jìn)程

1、命令格式:

kill[參數(shù)][進(jìn)程號pid]

2.命令功能:

發(fā)送指定的信號到相應(yīng)進(jìn)程。不指定型號將發(fā)送SIGTERM(15)終止指定進(jìn)程。如果任無法終止該程序可用“-KILL”?參數(shù),其發(fā)送的信號為SIGKILL(9)?,將強(qiáng)制結(jié)束進(jìn)程,使用ps命令或者jobs?命令可以查看進(jìn)程號。root用戶將影響用戶的進(jìn)程,非root用戶只能影響自己的進(jìn)程。

3.命令參數(shù):

-l??信號,若果不加信號的編號參數(shù),則使用“-l”參數(shù)會列出全部的信號名稱,eg:[root@localhost ~]# kill -l

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

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

-s??指定發(fā)送信號

-u??指定用戶?

注意:

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

kill?-2?123

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

2、應(yīng)注意,信號使進(jìn)程強(qiáng)行終止,這常會帶來一些副作用,如數(shù)據(jù)丟失或者終端無法恢復(fù)到正常狀態(tài)。發(fā)送信號時必須小心,只有在萬不得已時,才用kill信號(9),因為進(jìn)程不能首先捕獲它。要撤銷所有的后臺作業(yè),可以輸入kill?0。因為有些在后臺運行的命令會啟動多個進(jìn)程,跟蹤并找到所有要殺掉的進(jìn)程的PID是件很麻煩的事。這時,使用kill?0來終止所有由當(dāng)前shell啟動的進(jìn)程,是個有效的方法。
只有第9種信號(SIGKILL)才可以無條件終止進(jìn)程,其他信號進(jìn)程都有權(quán)利忽略。下面是常用的信號:

HUP????1????終端斷線,如果想要更改配置而不需停止并重新啟動服務(wù),可以使用zhe個命令

INT?????2????中斷(同?Ctrl?+?C)

QUIT????3????退出(同?Ctrl?+?\)

TERM???15????終止

KILL????9????強(qiáng)制終止

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

STOP????19????暫停(同?Ctrl?+?Z)

USR1 ? ? ? ?通常被用來告知應(yīng)用程序重載配置文件;例如,向Apache HTTP服務(wù)器發(fā)送一個USR1信號將導(dǎo)致以下步驟的發(fā)生:停止接受新的連接,等待當(dāng)前連接停止,重新載入配置文件,重新打開日志文件,重啟服務(wù)器,從而實現(xiàn)相對平滑的不關(guān)機(jī)的更改。

這些signal可以通過kill -l查看

[root@finchina?~]#?kill?-l1)?SIGHUP ?2)?SIGINT ?3)?SIGQUIT ?4)?SIGILL ?5)?SIGTRAP6)?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 [root@finchina?~]#


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

4、USR1亦通常被用來告知應(yīng)用程序重載配置文件;例如,向Apache HTTP服務(wù)器發(fā)送一個USR1信號將導(dǎo)致以下步驟的發(fā)生:停止接受新的連接,等待當(dāng)前連接停止,重新載入配置文件,重新打開日志文件,重啟服務(wù)器,從而實現(xiàn)相對平滑的不關(guān)機(jī)的更改。

kill?-USR1?`cat?/usr/local/nginx/logs/nginx.pid`

4、實例

4.1終止firefox進(jìn)程

[root@localhost?~]#?pgrep?firefox 3049 [root@localhost?~]#?ps?-ef|grep?firefox root??????3049?????1??2?07:36??????????00:00:00?/usr/lib/firefox/firefox root??????3089??2979??0?07:37?pts/0????00:00:00?grep?firefox [root@localhost?~]#?kill?3049 [root@localhost?~]#

4.2改進(jìn)1

[root@localhost?~]#?kill?-9?$(pgrep?firefox) [root@localhost?~]#

$( )的用途和反引號` `一樣,用來表示優(yōu)先執(zhí)行的命令,這里的kill -9 $(pgrep firefox)表示先執(zhí)行pgrep firefox再kill -9 結(jié)束該進(jìn)程

4.3改進(jìn)2--pkill

pkill=pgrep+kill

[root@localhost?~]#?pkill?firefox [root@localhost?~]#?pkill?-9?firefox [root@localhost?~]#

"-9" 即發(fā)送的信號是9,pkill與kill在這點的差別是:pkill無須 “s”,終止信號等級直接跟在 “-“ 后面。之前我一直以為是 "-s 9",結(jié)果每次運行都無法終止進(jìn)程。

4.3改進(jìn)3-killall

killall命令殺死同一進(jìn)程組內(nèi)的所有進(jìn)程。其允許指定要終止的進(jìn)程的名稱,而非PID,和pkill是相似的,不過如果給出的進(jìn)程名不完整,killall會報錯。pkill或者pgrep只要給出進(jìn)程名的一部分就可以終止進(jìn)程。

[root@localhost?~]#?killall?httpd [root@localhost?~]#


轉(zhuǎn)載于:https://blog.51cto.com/ityunwei2017/1313927

總結(jié)

以上是生活随笔為你收集整理的RHEL6基础之十八Linux中Kill进程的方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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