12個程式管理命令介紹

linux.cn發表於2015-06-03

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

  為了管理這些程式,使用者應該能夠:

  • 檢視所有執行中的程式
  • 檢視程式消耗資源
  • 定位個別程式並且對其執行指定操作
  • 改變程式的優先順序
  • 殺死指定程式
  • 限制程式可用的系統資源等

  Linux提供了許多命令來讓使用者來高效掌控上述的操作。接下來,一個一個的來講解下。

  1. ps

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

ps -a - 列出所有執行中/啟用程式

Output of "ps -a" command

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

  2. pstree

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

pstree

  3. top

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

top

  4. htop

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

htop output

  5. nice

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

  程式優先順序值的範圍從-20到19。值越低,優先順序越高。

nice <優先值> <程式名> - 通過給定的優先值啟動一個程式

nice command

changed nice value of 'top'

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

  6. renice

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

renice -n -p - 改變指定程式的優先值

renice command

  初始優先值為0的3806號程式優先值已經變成了4.

renice -u -g - 通過指定使用者和組來改變程式優先值

output of renice for a user group

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

  7. kill

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

kill <pid>
kill -9 <pid>
killall -9 - 殺死所有擁有同樣名字的程式

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

pkill <程式名>

kill initiated

kill

  8. ulimit

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

ulimit -a - 顯示當前使用者關聯的資源限制

ulimit -a

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

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

  9. w

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

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

'w' command

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

'who' command

  whoami 命令輸出當前使用者ID

'whoami' command

  10. pgrep

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

pgrep -u mint sh

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

output of pgrep

  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

output of fg, bg and jobscommands

  12. ipcs

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

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

ipcs -p -m

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

ipcs command

  總結

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

  via: http://linoxide.com/linux-command/process-management-commands-linux/ 翻譯:linux.cn

相關文章