歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux下關於Kill命令的進程調度解析

Linux下關於Kill命令的進程調度解析

日期:2017/2/28 17:49:18   编辑:Linux教程

kill命令

當需要中斷一個前台進程的時候,通常是使用< 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命令的使用

下面看看該命令的使用。

例:在執行一條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進程已經被殺掉了。

例:殺掉進程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都不響應,那恐怕就只有重新啟動計算機了。

Copyright © Linux教程網 All Rights Reserved