Windows XP Windows 7 Windows 2003 Windows Vista Windows教程綜合 Linux 系統教程
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟件教程
 Windows教程網 >> Linux系統教程 >> Linux系統常見問題解答 >> linux 進程管理相關內容

linux 進程管理相關內容

日期:2017/1/20 17:35:39      編輯:Linux系統常見問題解答
  3.命令參數:   -l  信號,若果不加信號的編號參數,則使用“-l”參數會列出全部的信號名稱   -a  當處理當前進程時,不限制命令名和進程號的對應關系   -p  指定kill 命令只打印相關進程的進程號,而不發送任何信號   -s  指定發送信號   -u  指定用戶        注意:   1、kill命令可以帶信號號碼選項,也可以不帶。如果沒有信號號碼,kill命令就會發出終止信號(15),這個信號可以被進程捕獲,使得進程在退出之前可以清理並釋放資源。也可以用kill向進程發送特定的信號。例如:   kill -2 123   它的效果等同於在前台運行PID為123的進程時按下Ctrl+C鍵。但是,普通用戶只能使用不帶signal參數的kill命令或最多使用-9信號。   2、kill可以帶有進程ID號作為參數。當用kill向這些進程發送信號時,必須是這些進程的主人。如果試圖撤銷一個沒有權限撤銷的進程或撤銷一個不存在的進程,就會得到一個錯誤信息。   3、可以向多個進程發信號或終止它們。   4、當kill成功地發送了信號後,shell會在屏幕上顯示出進程的終止信息。有時這個信息不會馬上顯示,只有當按下Enter鍵使shell的命令提示符再次出現時,才會顯示出來。   5、應注意,信號使進程強行終止,這常會帶來一些副作用,如數據丟失或者終端無法恢復到正常狀態。發送信號時必須小心,只有在萬不得已時,才用kill信號(9),因為進程不能首先捕獲它。要撤銷所有的後台作業,可以輸入kill 0。因為有些在後台運行的命令會啟動多個進程,跟蹤並找到所有要殺掉的進程的PID是件很麻煩的事。這時,使用kill 0來終止所有由當前shell啟動的進程,是個有效的方法。       信號說明:   只有第9種信號(SIGKILL)才可以無條件終止進程,其他信號進程都有權利忽略。 下面是常用的信號:   HUP    1    終端斷線   INT     2    中斷(同 Ctrl + C)   QUIT    3    退出(同 Ctrl + \)   TERM   15    終止   KILL    9    強制終止   CONT   18    繼續(與STOP相反, fg/bg命令)   STOP    19    暫停(同 Ctrl + Z)   父進程和子進程 每個 Linux 進程會包含兩個進程ID:當前進程ID(pid)和父進程ID(ppid)。可以暫時認為所有的進程都有父進程。   由用戶運行的大部分命令都將 Shell 作為父進程,使用 ps -f 命令可以查看當前進程ID和父進程ID。   僵屍進程和孤兒進程 正常情況下,子進程被終止時會通過 SIGCHLD 信號通知父進程,父進程可以做一些清理工作或者重新啟動一個新的進程。但在某些情況下,父進程會在子進程之前被終止,那麼這些子進程就沒有了“父親”,被稱為孤兒進程。   init 進程會成為所有孤兒進程的父進程。init 的 pid 為1,是Linux系統的第一個進程,也是所有進程的父進程。   如果一個進程被終止了,但是使用 ps 命令仍然可以查看該進程,並且狀態為 Z,那麼這就是一個僵屍進程。僵屍進程雖然被終止了,但是仍然存在於進程列表中。一般僵屍進程很難殺掉,你可以先殺死他們的父進程,讓他們變成孤兒進程,init 進程會自動清理僵屍進程。   常駐進程 常駐進程一般是系統級進程,以 root 權限運行在後台,可以處理其他進程的請求。   常駐進程沒有終端,不能訪問 /dev/tty 文件,如果使用 ps -ef 查看該進程,tty 這一列會顯示問號(?)。   更確切地說,常駐進程通常運行在後台,等待指定事件發生,例如打印進程是一個常駐進程,它會等待用戶輸入打印相關的命令並進行處理。   top命令 top 命令是一個很有用的工具,它可以動態顯示正在運行的進程,還可以按照指定條件對進程進行排序,與Windows的任務管理器類似。   top 命令可以顯示進程的很多信息,包括物理內存、虛擬內存、CPU使用率、平均負載以及繁忙的進程等。例如:   $top 任務和進程 任務(task)是最抽象的,是一個一般性的術語,指由軟件完成的一個活動。一個任務既可以是一個進程,也可以是多個進程。簡而言之,它指的是一系列共同達到某一目的的操作。例如,讀取數據並將數據放入內存中。這個任務可以由一個進程來實現,也可以由多個進程來實現。  每個任務都有一個數字表示的任務號。    進程(process)常常被定義為程序的執行。可以把一個進程看成是一個獨立的程序,在內存中有其完備的數據空間和代碼空間。一個進程所擁有的數據和變量只屬於它自己。   jobs 命令可以用來查看系統中正在運行的任務,包括後台運行的任務。該命令可以顯示任務號及其對應的進程ID。一個任務可以對應於一個或者多個進程號。   jobs 命令的 -l 選項可以查看當前任務包含的進程ID:   $jobs -l [1] + 1903 running                 ls ch*.doc & $ 其中,第一列表示任務號,第二列表示任務對應的進程ID,第三列表示任務的運行狀態,第四列表示啟動任務的命令。   前台任務和後台任務的切換 fg 命令可以將後台任務調到前台,語法為:   $fg %jobnumber jobnumber 是通過 jobs 命令獲取的後台任務的的序號,注意不是pid。如果後台只有一個任務,可以不指定 jobnumber。   bg 命令可以將後台暫停的任務,調到前台繼續運行,語法為:  
Copyright © Windows教程網 All Rights Reserved