Linux系統的進程管理 續

發表于:2007-05-26來源:作者:點擊數: 標簽:
另外一個有用的程序就是top。 這個程序和ps類似,但是通常會全屏顯示,而且會隨著進程狀態的變化不斷更新。對于那些經常引發問題,而用ps又難以查看的程序而言,這個命令是很有用的。整個系統的信息也會顯示,這就為著手查找問題提供了便利。系統總共有多少C
另外一個有用的程序就是top。

這個程序和ps類似,但是通常會全屏顯示,而且會隨著進程狀態的變化不斷更新。對于那些經常引發問題,而用ps又難以查看的程序而言,這個命令是很有用的。整個系統的信息也會顯示,這就為著手查找問題提供了便利。系統總共有多少CPU和內存資源以及負載平衡等信息本身就是很有用的,再加上程序列表以及程序當前的狀態和各自的統計信息,你現在可以理解為什么top這么常用了。

不要忘了pstree
最后,另外一個可以快速簡單查看進程的命令是pstree。這個命令會列出當前的進程以及它們的樹結構。一個進程啟動的時候可能會產生自己的一個子進程。運行pstree命令就可以很容易地看到這些信息。

  $ pstree -cp 125
  httpd(125)-+-httpd(126)
          |-httpd(127)
          | -httpd(129)
          `-httpd(130)

Httpd是個很好的例子,因為它會經常產生子進程。在上例中你可以看到PID為125的樹。如果你想終止httpd但是又不想結束所有單個的子進程,那么找父進程。pstree命令可以列出所有單個進程對應的樹或者系統中的所有進程。它不僅可以幫助你找到發生異常的進程,還可以作為一個學習工具。用戶可以通過執行這些命令學到Linux的很多東西,還可以參考相關的幫助頁。

管理進程
如果你學會了用ps和top這些命令監視進程,你還應該知道怎么管理進程。你可以用kill、killall和renice這些命令實現進程管理。

"kill"命令向正在運行的進程發送信號。最常見的應用就是用它來停止程序的執行。你首先要獲得運行進程的PID(比如可以用ps aux命令),然后可以用如下命令終止進程:

  $ kill 125

  $ kill -9 125

通常情況下這個命令可以終止進程125。需要強調的是你要么是這個進程的屬主,要么是根用戶,否則不能終止這個進程。有時候單純用一個kill命令并不能終止進程,你還需要以下操作:

如果進程掛起而且沒有正?;貞?,那么可以用"-9"標志來結束這個進程,上例指明了這個過程。通常的kill命令是發送一個sigterm信號,而-9發送的是sigkill信號,這個信號強迫程序終止。其它一些信號可以用于終止或者啟動進程。你可以運行"kill -l"命令,然后就可以看到這些內容。

Killall命令與kill命令很相似,但是接收不同的參數。你可以向它傳送一個程序名而不是PID。以這個程序名運行的所有進程都會被終止。只要你是程序的屬主或者是根用戶那么就可以終止這個程序。所以運行killall tcpdump命令會終止所有tcpdump程序的實例。如果有很多進程以同樣的名字運行,這一點是很有用的。

一定要注意你在終止什么進程,特別在你是根用戶的時候。終止了不適當的進程可能終止你的會話甚至讓整個系統都停止運行。你應該熟悉那些標準的運行進程以及它們的資源使用情況。如果想防止系統問題發生,最好設置一個基線。

還記不記得我先前提到可以改變進程的優先級?你可以用renice命令實現。改變優先級可以通知系統給某個進程更多或者更少的CPU時間。進程優先級("niceness")的范圍從-20到20,-20是最高的優先級。所以如果想要減小httpd進程125的優先級,你可以運行下面的命令:

  $ renice +20 125

你可以通過改變優先級來節省系統資源。系統可以自動改變優先級,每當這種情況發生的時候,很可能意味著一個程序占用了比正常情況下更多的資源。

加速問題解決過程
能夠監視和控制Linux系統中的進程是很必要的。ps、top、kill和renice這些程序可以讓你看到進程的運行情況并且對它進行控制。你對每個進程了解得越多,就能夠越容易地精確定位進程的問題所在。系統通常會因為某種原因遇到各種問題,比如速度變慢或者不穩定,而使用這些工具可以幫助你提高找到問題所在的能力。

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97