學(xué)習(xí)啦 > 學(xué)習(xí)電腦 > 操作系統(tǒng) > Linux教程 > Linux系統(tǒng)中kill命令的參數(shù)及用法詳解

Linux系統(tǒng)中kill命令的參數(shù)及用法詳解

時間: 佳洲1085 分享

Linux系統(tǒng)中kill命令的參數(shù)及用法詳解

  Linux系統(tǒng)中kill命令是結(jié)束進(jìn)程的命令,是基本命令之一。下面由學(xué)習(xí)啦小編為大家整理了Linux系統(tǒng)中kill命令的參數(shù)及用法詳解的相關(guān)知識,希望對大家有幫助!

  Linux系統(tǒng)中kill命令的參數(shù)及用法詳解:參數(shù)說明

  1.作用

  kill命令用來中止一個進(jìn)程。

  2.格式

  kill [ -s signal | -p ] [ -a ] pid ...

  kill -l [ signal ]

  3.參數(shù)

  -s:指定發(fā)送的信號。

  -p:模擬發(fā)送信號

  -p:模擬發(fā)送信號

  pid:要中止進(jìn)程的ID號

  Signal:表示信號

  4.說明

  進(jìn)程是Linux系統(tǒng)中一個非常重要的概念。Linux是一個多任務(wù)的操作系統(tǒng),系統(tǒng)上經(jīng)常同時運行著多個進(jìn)程。我們不關(guān)心這些進(jìn)程究竟是如何分配的,或者是內(nèi)核如何管理分配時間片的,所關(guān)心的是如何去控制這些進(jìn)程,讓它們能夠很好地為用戶服務(wù)。

  Linux操作系統(tǒng)包括三種不同類型的進(jìn)程,每種進(jìn)程都有自己的特點和屬性。交互進(jìn)程是由一個Shell啟動的進(jìn)程。交互進(jìn)程既可以在前臺運行,也可以在后臺運行。批處理進(jìn)程和終端沒有聯(lián)系,是一個進(jìn)程序列。監(jiān)控進(jìn)程(也稱系統(tǒng)守護(hù)進(jìn)程)是Linux系統(tǒng)啟動時啟動的進(jìn)程,并在后臺運行。例如,httpd是著名的Apache服務(wù)器的監(jiān)控進(jìn)程。

  kill命令的工作原理是,向Linux系統(tǒng)的內(nèi)核發(fā)送一個系統(tǒng)操作信號和某個程序的進(jìn)程標(biāo)識號,然后系統(tǒng)內(nèi)核就可以對進(jìn)程標(biāo)識號指定的進(jìn)程進(jìn)行操作。比如在top命令中,我們看到系統(tǒng)運行許多進(jìn)程,有時就需要使用kill中止某些進(jìn)程來提高系統(tǒng)資源。在講解安裝和登陸命令時,曾提到系統(tǒng)多個虛擬控制臺的作用是當(dāng)一個程序出錯造成系統(tǒng)死鎖時,可以切換到其它虛擬控制臺工作關(guān)閉這個程序。此時使用的命令就是kill,因為kill是大多數(shù)Shell內(nèi)部命令可以直接調(diào)用的。

  Linux系統(tǒng)中的kill命令參數(shù)及用法詳解:用法詳解

  (1)強(qiáng)行中止(經(jīng)常使用殺掉)一個進(jìn)程標(biāo)識號為324的進(jìn)程:

  #kill -9 324

  (2)解除Linux系統(tǒng)的死鎖

  在Linux中有時會發(fā)生這樣一種情況:一個程序崩潰,并且處于死鎖的狀態(tài)。此時一般不用重新啟動計算機(jī),只需要中止(或者說是關(guān)閉)這個有問題的程序即可。當(dāng)kill處于X-Window界面時,主要的程序(除了崩潰的程序之外)一般都已經(jīng)正常啟動了。此時打開一個終端,在那里中止有問題的程序。比如,如果Mozilla瀏覽器程序出現(xiàn)了鎖死的情況,可以使用kill命令來中止所有包含有Mozolla瀏覽器的程序。首先用top命令查處該程序的 PID,然后使用kill命令停止這個程序:

  #kill -SIGKILL XXX

  ## 其中,XXX是包含有Mozolla瀏覽器的程序的進(jìn)程標(biāo)識號

  (3)使用命令回收內(nèi)存

  我們知道內(nèi)存對于系統(tǒng)是非常重要的,回收內(nèi)存可以提高系統(tǒng)資源。kill命令可以及時地中止一些“越軌”的程序或很長時間沒有相應(yīng)的程序。例如,使用top命令發(fā)現(xiàn)一個無用 (Zombie) 的進(jìn)程,此時可以使用下面命令:

  #kill -9 XXX

  ## 其中,XXX是無用的進(jìn)程標(biāo)識號

  然后使用下面命令:

  #kill -9 XXX

  ## 此時會發(fā)現(xiàn)可用內(nèi)存容量增加了

  (4)killall命令

  Linux下還提供了一個killall命令,可以直接使用進(jìn)程的名字而不是進(jìn)程標(biāo)識號,例如:

  # killall -HUP inetd

  ## 殺死進(jìn)程最安全的方法是單純使用kill命令,不加修飾符,不帶標(biāo)志

  首先使用ps -ef命令確定要殺死進(jìn)程的PID,然后輸入以下命令:

  # kill -pid

  注釋:標(biāo)準(zhǔn)的kill命令通常都能達(dá)到目的。終止有問題的進(jìn)程,并把進(jìn)程的資源釋放給系統(tǒng)。然而,如果進(jìn)程啟動了子進(jìn)程,只殺死父進(jìn)程,子進(jìn)程仍在運行,因此仍消耗資源。為了防止這些所謂的“僵尸進(jìn)程”,應(yīng)確保在殺死父進(jìn)程之前,先殺死其所有的子進(jìn)程。

3637163