天天看點

12個程序管理指令介紹

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

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

檢視所有運作中的程序

檢視程序消耗資源

定位個别程序并且對其執行指定操作

改變程序的優先級

殺死指定程序

限制程序可用的系統資源等

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

12個程式管理指令介紹

<a target="_blank"></a>

'ps'是linux 中最基礎的浏覽系統中的程序的指令。能列出系統中運作的程序,包括程序号、指令、cpu使用量、記憶體使用量等。下述選項可以得到更多有用的消息。

<code>ps -a - 列出所有運作中/激活程序</code>

12個程式管理指令介紹

output of "ps -a" command

<code>ps -ef |grep - 列出需要程序</code>

<code>ps -aux - 顯示程序資訊,包括無終端的(x)和針對使用者(u)的程序:如user, pid, %cpu, %mem等</code>

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

12個程式管理指令介紹

pstree

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

12個程式管理指令介紹

top

htop與top很類似,但是htop是互動式的文本模式的程序檢視器。它通過文字圖形化地顯示每一個程序的cpu和記憶體使用量、swap使用量。使用上下光标鍵選擇程序,f7和f8改變優先級,f9殺死程序。htop不是系統預設安裝的,是以需要額外安裝。

12個程式管理指令介紹

htop output

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

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

<code>nice &lt;優先值&gt; &lt;程序名&gt; - 通過給定的優先值啟動一個程式</code>

12個程式管理指令介紹

nice command

12個程式管理指令介紹

changed nice value of 'top'

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

renice指令類似nice指令。使用這個指令可以改變正在運作的程序優先值。注意,使用者隻能改變屬于他們自己的程序的優先值。

<code>renice -n -p - 改變指定程序的優先值</code>

12個程式管理指令介紹

renice command

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

<code>renice -u -g - 通過指定使用者群組來改變程序優先值</code>

12個程式管理指令介紹

output of renice for a user group

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

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

<code>kill &lt;pid&gt;</code>

<code>kill -9 &lt;pid&gt;</code>

<code>killall -9 - 殺死所有擁有同樣名字的程序</code>

如果你使用kill,你需要知道程序id号。pkill是類似的指令,但使用模式比對,如程序名,程序擁有者等。

<code>pkill &lt;程序名&gt;</code>

12個程式管理指令介紹

kill initiated

12個程式管理指令介紹

kill

該指令用于控制系統資源在shell和程序上的配置設定量。對于系統管理者是最有用的,可以管理重度使用和存在性能問題的系統。限制資源大小可以確定重要程序持續運作,其他程序不會占用過多資源。

<code>ulimit -a - 顯示目前使用者關聯的資源限制</code>

12個程式管理指令介紹

ulimit -a

<code>-f - 最大檔案尺寸大小</code>

<code>-v - 最大虛拟記憶體大小(kb)</code>

<code>-n - 增加最大檔案描述符數量</code>

<code>-h : 改變和報告硬限制</code>

<code>-s : 改變和報告軟限制</code>

浏覽ulimit man頁面擷取更多選項。

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

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

12個程式管理指令介紹

'w' command

who是類似指令,提供目前登入使用者清單、系統啟動時間、運作級别等。

12個程式管理指令介紹

'who' command

whoami 指令輸出目前使用者id

12個程式管理指令介紹

'whoami' command

pgrep的意思是"程序号全局正則比對輸出"。該指令掃描目前運作程序,然後按照指令比對條件列出比對結果到标準輸出。對于通過名字檢索程序号是很有用。

<code>pgrep -u mint sh</code>

這個指令将會顯示使用者為‘mint’和程序名為‘sh’的程序id。

12個程式管理指令介紹

output of pgrep

有時,指令需要很長的時間才能執行完成。對于這種情況,我們使用‘bg’指令可以将任務放在背景執行,而用‘fg’可以調到前台來使用。

我們可以通過‘&amp;’在背景啟動一個程式:

<code>find . -name *iso &gt; /tmp/res.txt &amp;</code>

一個正在運作的程式也可以通過“ctrl+z”和“bg”指令組合放到背景運作。

<code>find . -name *iso &gt; /tmp/res.txt &amp; - 啟動一個程式</code>

<code>ctrl+z - 挂起目前執行程式</code>

<code>bg - 将程式放到背景運作</code>

我們可以使用‘jobs’指令列出所有背景程序。

<code>jobs</code>

使用‘fg’指令可以将背景程式調到前台執行。

<code>fg %程序id</code>

12個程式管理指令介紹

output of fg, bg and jobscommands

ipcs指令報告程序間通信設施狀态。(共享記憶體,信号量和消息隊列)

用-p參數聯合-m、-s或-q使用,可以獲得相關的程序間通信的程序id。

<code>ipcs -p -m</code>

下面螢幕截圖列出了最近通路了共享記憶體段的程序的建立者的id和程序id。

12個程式管理指令介紹

ipcs command

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

<b>原文釋出時間為:2015-06-02</b>

<b>本文來自雲栖社群合作夥伴“linux中國”</b>

繼續閱讀