12 個 Linux 程式管理命令介紹

linux.cn發表於2015-06-02
執行中的程式在稱作程式。當程式以可執行檔案存放在儲存中,並且執行的時候,每個程式會被動態得分配系統資源、記憶體、安全屬性和與之相關的狀態。可以有多個程式關聯到同一個程式,並同時執行不會互相干擾。作業系統會有效地管理和追蹤所有執行著的程式。

為了管理這些程式,使用者應該能夠:
  • 檢視所有執行中的程式
  • 檢視程式消耗資源
  • 定位個別程式並且對其執行指定操作
  • 改變程式的優先順序
  • 殺死指定程式
  • 限制程式可用的系統資源等
Linux提供了許多命令來讓使用者來高效掌控上述的操作。接下來,一個一個的來講解下。


1. ps

‘ps’是Linux 中最基礎的瀏覽系統中的程式的命令。能列出系統中執行的程式,包括程式號、命令、CPU使用量、記憶體使用量等。下述選項可以得到更多有用的訊息。
ps -a - 列出所有執行中/啟用程式


ps -ef |grep - 列出需要程式
ps -aux - 顯示程式資訊,包括無終端的(x)和針對使用者(u)的程式:如USER, PID, %CPU, %MEM等

2. pstree

linux中,每一個程式都是由其父程式建立的。此命令以視覺化方式顯示程式,通過顯示程式的樹狀圖來展示程式間關係。如果指定了pid了,那麼樹的根是該pid,不然將會是init(pid: 1)。



3. top

‘top’是一個更加有用的命令,可以監視系統中不同的程式所使用的資源。它提供實時的系統狀態資訊。顯示程式的資料包括 PID、程式屬主、優先順序、%CPU、%memory等。可以使用這些顯示指示出資源使用量。



4. htop

htop與top很類似,但是htop是互動式的文字模式的程式檢視器。它通過文字圖形化地顯示每一個程式的CPU和記憶體使用量、swap使用量。使用上下游標鍵選擇程式,F7和F8改變優先順序,F9殺死程式。Htop不是系統預設安裝的,所以需要額外安裝。



5. nice

通過nice命令的幫助,使用者可以設定和改變程式的優先順序。提高一個程式的優先順序,核心會分配更多CPU時間片給這個程式。預設情況下,程式以0的優先順序啟動。程式優先順序可以通過top命令顯示的NI(nice value)列檢視。
程式優先順序值的範圍從-20到19。值越低,優先順序越高。
nice <優先值> <程式名> - 通過給定的優先值啟動一個程式





上述命令例子中,可以看到‘top’命令獲得了-3的優先值。

6. renice

renice命令類似nice命令。使用這個命令可以改變正在執行的程式優先值。注意,使用者只能改變屬於他們自己的程式的優先值。
renice -n -p - 改變指定程式的優先值



初始優先值為0的3806號程式優先值已經變成了4.
renice -u -g - 通過指定使用者和組來改變程式優先值



上述例子中,使用者為‘mint’的所有程式優先值變為‘-3’。

7. kill

這個命令用於傳送訊號來結束程式。如果一個程式沒有響應殺死命令,這也許就需要強制殺死,使用-9引數來執行。注意,使用強制殺死的時候一定要小心,因為程式沒有時機清理現場,也許寫入檔案沒有完成。如果我們不知道程式PID或者打算用名字殺死程式時候,killall就能派上用場。
kill <pid>
kill -9 <pid>
killall -9 - 殺死所有擁有同樣名字的程式

如果你使用kill,你需要知道程式ID號。pkill是類似的命令,但使用模式匹配,如程式名,程式擁有者等。
pkill <程式名>




8. ulimit

該命令用於控制系統資源在shell和程式上的分配量。對於系統管理員是最有用的,可以管理重度使用和存在效能問題的系統。限制資源大小可以確保重要程式持續執行,其他程式不會佔用過多資源。
ulimit -a - 顯示當前使用者關聯的資源限制


-f - 最大檔案尺寸大小
-v - 最大虛擬記憶體大小(KB)
-n - 增加最大檔案描述符數量
-H : 改變和報告硬限制
-S : 改變和報告軟限制

瀏覽ulimit man頁面獲取更多選項。

9. w

w 提供當前登入的使用者及其正在執行的程式的資訊。顯示資訊頭包含資訊,如當前時間、系統執行時長、登入使用者總數、過去的1,5,15分鐘內的負載均衡數。

基於這些使用者資訊,使用者在終止不屬於他們的程式時要小心。



who是類似命令,提供當前登入使用者列表、系統啟動時間、執行級別等。



whoami 命令輸出當前使用者ID



10. pgrep

pgrep的意思是”程式號全域性正則匹配輸出”。該命令掃描當前執行程式,然後按照命令匹配條件列出匹配結果到標準輸出。對於通過名字檢索程式號是很有用。
pgrep -u mint sh

這個命令將會顯示使用者為‘mint’和程式名為‘sh’的程式ID。



11. fg , bg

有時,命令需要很長的時間才能執行完成。對於這種情況,我們使用‘bg’命令可以將任務放在後臺執行,而用‘fg’可以調到前臺來使用。

我們可以通過‘&’在後臺啟動一個程式:
find . -name *iso > /tmp/res.txt &

一個正在執行的程式也可以通過“CTRL+Z”和“bg”命令組合放到後臺執行。
find . -name *iso > /tmp/res.txt &     -  啟動一個程式
ctrl+z      -   掛起當前執行程式
bg   -  將程式放到後臺執行

我們可以使用‘jobs’命令列出所有後臺程式。
jobs

使用‘fg’命令可以將後臺程式調到前臺執行。
fg %程式id



12. ipcs

ipcs命令報告程式間通訊設施狀態。(共享記憶體,訊號量和訊息佇列)

用-p引數聯合-m、-s或-q使用,可以獲得相關的程式間通訊的程式ID。
ipcs -p -m

下面螢幕截圖列出了最近訪問了共享記憶體段的程式的建立者的ID和程式ID。



總結

總之 ,這些命令可以幫助管理員修復問題和改善效能。同樣作為一名普通使用者也需要解決程式出現的問題。所以,熟悉如此繁多的命令,從能有效管理程式是行之有效。
評論(1)

相關文章