linux kill 命令詳解

來源:互聯網
上載者:User

 

當需要中斷一個前台進程的時候,通常是使用< Ctrl+c >按鍵組合;但是對於一個後台進程恐怕就不是一個按鍵組合所能解決的了,這時就必須求助於kill命令。該命令可以終止後台進程。至於終止後台進程的原因很多,或許是該進程佔用的CPU時間過多;或許是該進程已經掛死。總之這種情況是經常發生的。
  kill命令是通過向進程發送指定的訊號來結束進程的。如果沒有指定發送訊號,那麼預設值為TERM訊號。TERM訊號將終止所有不能捕獲該訊號的進程。至於那些可以捕獲該訊號的進程可能就需要使用kill(9)訊號了,該訊號是不能被捕捉的。
  kill命令的文法格式很簡單,大致有以下兩種方式:
  kill [-s 訊號 | -p ] [ -a ] 進程號 ...
  kill -l [訊號]
  -s 指定需要送出的訊號。既可以是訊號名也可以對應數字。
  -p 指定kill命令只是顯示進程的pid,並不真正送出結束訊號。
  -l 顯示訊號名稱列表,這也可以在/usr/include/linux/signal.h檔案中找到。
  kill命令的使用
  下面看看該命令的使用。
  [例24] 在執行一條find指令時由於時間過長,決定終止該進程。
  首先應該使用ps命令來查看該進程對應的PID,鍵入ps,顯示如下:
  PID TTY TIME COMMAND
  285 1 00:00:00 -bash
  287 3 00:00:00 -bash
  289 5 00:00:00 /sbin/mingetty tty5
  290 6 00:00:00 /sbin/mingetty tty6
  312 3 00:00:00 telnet bbs3
  341 4 00:00:00 /sbin/mingetty tty4
  345 1 00:00:00 find / -name foxy.jpg
  348 1 00:00:00 ps
  可以看到該進程對應的PID是345,現在使用kill命令來終止該進程。鍵入:
  # kill 345再用ps命令查看,就可以看到,find進程已經被殺掉了。
  [例25] 殺掉進程11721
  # ps PID TTY TIME COMMAND
  11668 p1 00:00:00 -tcsh
  11721 p1 00:00:00 cat
  11737 p1 00:00:00 ps
  # kill 11721
  [1] Terminated cat
  #
  有時候可能會遇到這樣的情況,某個進程已經掛死或閑置,使用kill命令卻殺不掉。這時候就必鬚髮送訊號9,強行關閉此進程。當然這種“野蠻”的方法很可能會導致開啟的檔案出現錯誤或者資料丟失之類的錯誤。所以不到萬不得已不要使用強制結束的辦法。如果連訊號9都不響應,那恐怕就只有重新啟動電腦了。
  控制多個進程命令
  Linux可使使用者同時運行多個進程,還允許使用者或系統管理員能控制正在啟動並執行進程。
  nohup命令
  理論上,我們一般退出Linux系統時,會把所有的程式全部結束掉,包括那些背景程式。但有時候,例如您正在編輯一個很長的程式,但是您下班或

是有事需要先退出系統,這時您又不希望系統把您編輯那麼久的程式結束掉,希望退出系統時,程式還能繼續執行。這時,我們就可以使用nohup命令使進程在使用者退出後仍繼續執行。
  一般這些進程我們都是讓它在後台執行,結果則會寫到使用者自己的目錄下的nohup.out這個檔案裡(也可以使用輸出重新導向,讓它輸出到一個特定的檔案)。
  [例26] $ nohup sort sales.dat &
  這條命令告訴sort命令忽略使用者已退出系統,它應該一直運行,直到進程完成。利用這種方法,可以啟動一個要運行幾天甚至幾周的進程,而且在它運行時,使用者不需要去登入。
  nohup命令把一條命令的所有輸出和錯誤資訊送到nohup.out檔案中。若將輸出重新導向,則只有錯誤資訊放在nohup.out檔案中。
  renice命令
  renice命令允許使用者修改一個正在運行進程的優先權。 利用renice命令可以在命令執行時調整其優先權。其格式如下:
  $ renice -number PID
  其中,參數number與nice命令的number意義相同。
  註:
  (1) 使用者只能對自己所有的進程使用renice命令。
  (2) root使用者可以在任何進程上使用renice命令。
  (3) 只有root使用者才能提高進程的優先權。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.