精通軟件性能測試與LoadRunner最佳實戰 連載六
Linux在進程監控方面同樣出色,不僅可以通過圖形用戶界面的管理工具,還可以用命令方式顯示進程相關信息。像“Windows的任務管理器”一樣,在RedHat 9中可以通過單擊“系統工具”→“系統監視器”,啟動“系統監視器”,如圖8-19所示。
圖8-19 “系統監視器”對話框
Linux系統提供了ps、top等查看進程信息的系統調用,通過結合使用這些系統調用,可以清晰地了解進程的運行狀態以及存活情況,從而采取相應的措施,來確保Linux系統的性能。ps是目前在Linux下最常見的進程狀況查看命令,是隨Linux版本發行的,安裝好系統之后,用戶就可以使用。這里以ps命令為例,ps命令是最基本同時也是非常強大的進程查看命令。利用它可以確定有哪些進程正在運行及運行的狀態、進程是否結束、進程有沒有僵死、哪些進程占用了過多的資源等。下面介紹一下ps命令的主要參數項的含義,如表8-2所示。
表8-2 ps命令的主要參數項說明
選 項 名 稱 | 說 明 |
-A | 顯示所有程序 |
a | 顯示現行終端機下的所有程序,包括其他用戶的程序 |
c | 列出程序時,顯示每個程序真正的指令名稱,而不包含路徑、參數或常駐服務的標示 |
-e | 此參數的效果和指定“A”參數相同 |
e | 列出程序時,顯示每個程序所使用的環境變量 |
f | 用ASCII字符顯示樹狀結構,表達程序間的相互關系 |
-H | 顯示樹狀結構,表示程序間的相互關系 |
-N | 顯示所有的程序,除了執行ps指令終端機下的程序之外 |
s | 采用程序信號的格式顯示程序狀況 |
S | 列出程序時,包括已中斷的子程序資料 |
-t<終端機編號> | 指定終端機編號,并列出屬于該終端機的程序的狀況 |
u | 以用戶為主的格式來顯示程序狀況 |
x | 顯示所有程序,不以終端機來區分 |
為了使大家對該命令的使用有更深刻的認識,這里給大家舉幾個例子進行說明。
1.示例一
ps命令可以監控后臺進程的工作情況,因為后臺進程是不和屏幕、鍵盤這些標準輸入/輸出設備進行通信的,如果需要檢測其情況,可以使用ps?-el命令,輸出內容如圖8-20所示。
圖8-20 “ps–el”命令顯示的進程信息
關于輸出信息項的含義,如表8-3所示。
表8-3 ps -el命令輸出項標頭含義說明
輸 出 項 | 說 明 |
F | 用數值表示目前進程的狀態 |
S | 用字符表示目前進程的狀態 |
UID | 進程使用者的ID |
PID | PID表示進程標示符 |
C | 進程使用CPU的估算 |
PRI | 進程執行的優先級 |
NI | Nice的值,Nice可以降低進程執行的優先權 |
SZ | Virtual Size,進程在虛擬內存中的大小 |
WCHAN | 等待頻道,當為Null時,表示進程正在執行,當進程在就緒時為Waiting for |
TTY | 表示該進程建立時所對應的終端,“?”表示該進程不占用終端 |
TIME | 進程已經執行的時間 |
CMD | 進程被執行的命令名稱 |
2.示例二
通常,在查看進程的時候,最常用的命令是“ps aux”,有時為了查找特定的進程,也會加入grep參數,如“ps aux |grep init”輸出信息如圖8-21和圖8-22所示。
圖8-21 “ps aux”命令顯示的進程信息
圖8-22 “ps aux|grep init”命令顯示的進程信息
關于輸出信息項的含義,如表8-4所示。
表8-4 “ps aux | grep init”命令輸出項標頭含義說明
輸 出 項 | 說 明 |
USER | 用戶名 |
PID | PID表示進程標示符 |
輸 出 項 | 說 明 |
%CPU | 當前使用的CPU百分比 |
%MEM | RSS與系統中全部可用頁面的比率,因為RSS是包含共享內存在內的近似值,這個百分比也是近似值,所以可能超過內存總量。%MEM列的總和可能會超過100% |
VSZ | Virtual Size,進程在虛擬內存中的大小。包括所有映射的文件和設備,單位是千字節 |
RSS | 進程使用物理內存的近似值,單位是千字節 |
TTY | 表示該進程建立時所對應的終端,“?”表示該進程不占用終端 |
STAT | 進程狀態。STAT中的字符的含義如下: “D”:不可中斷 “R”:正在運行,或在隊列中的進程 “S”:處于休眠狀態 “T”:停止或被追蹤 “Z”:僵尸進程 “W”:進入內存交換 “X”:死掉的進程 |
START | 進程運行的起始時間 |
TIME | 進程已經執行的時間。單位以CPU運行時間,min和s表示,來源于微態(用戶+系統時間)。如果出現較大的值(大于幾分鐘),那么意味著進程已經運行了一段時間 |
COMMAND | 進程被執行的命令名稱。COMMAND項是被刪除過的以便于輸出與終端窗口符合。用“ps auxw”命令來使得輸出顯示更寬,最多可顯示132個字符 |
3.示例三
此外,還可以通過pstree命令查看Linux進程樹。pstree命令以字符形式顯示樹狀結構,清晰地表達了程序間的相互關系。如果不指定程序識別碼或用戶名稱,則會把系統啟動時的第一個程序視為基層,并顯示之后的所有程序;若指定用戶名稱,便會以隸屬該用戶的第一個程序當做基層,然后顯示該用戶的所有程序。
下面,針對pstree選項進行說明,如表8-5所示。
表8-5 “pstree”命令主要參數項說明
選 項 名 稱 | 說 明 |
-a | 顯示每個程序的完整指令,包含路徑、參數或是常駐服務的標示 |
-G | 使用VT100終端機的列繪圖字符 |
c | 不使用精簡標示法 |
-h | 列出樹狀圖時,特別標明現在執行的程序 |
-H<程序識別碼> | 此參數的效果和指定 |
選 項 名 稱 | 說 明 |
-l | 采用長列格式顯示樹狀圖 |
-n | 用程序識別碼排序。預設是以程序名稱來排序 |
-p | 顯示程序識別碼 |
-u | 顯示用戶名稱 |
–U | 使用UTF |
-V | 顯示版本信息 |
如果要以長列格式顯示樹狀圖,并且顯示每個進程的完整指令,則可以在命令行輸入“pstree –a –l”,回車執行,輸出內容如圖8-23所示。
圖8-23 “pstree –a –l”命令顯示的進程信息
8.2.6 Linux操作系統進程終止技術
Linux操作系統也有結束進程的對應方法,在RedHat 9系統中,終止一個進程或正在運行的程序,一般是通過kill、killall、pkill等命令進行操作。
下面結合實例給大家具體介紹一下,這些命令是如何應用于具體的工作當中。首先,看一下kill命令,這里給大家介紹一個通用的查看命令幫助的方法,通常可以用“man命令”的方式來查看該命令的幫助信息,如查看kill命令幫助,則可以在終端命令窗口輸入“man kill”,回車執行,顯示如圖8-24所示信息,可以輸入“q”退出幫助信息查看。
圖8-24 “kill”命令幫助
3.示例三
此外,還可以通過pstree命令查看Linux進程樹。pstree命令以字符形式顯示樹狀結構,清晰地表達了程序間的相互關系。如果不指定程序識別碼或用戶名稱,則會把系統啟動時的第一個程序視為基層,并顯示之后的所有程序;若指定用戶名稱,便會以隸屬該用戶的第一個程序當做基層,然后顯示該用戶的所有程序。
下面,針對pstree選項進行說明,如表8-5所示。
表8-5 “pstree”命令主要參數項說明
選 項 名 稱 | 說 明 |
-a | 顯示每個程序的完整指令,包含路徑、參數或是常駐服務的標示 |
-G | 使用VT100終端機的列繪圖字符 |
c | 不使用精簡標示法 |
-h | 列出樹狀圖時,特別標明現在執行的程序 |
-H<程序識別碼> | 此參數的效果和指定 |
選 項 名 稱 | 說 明 |
-l | 采用長列格式顯示樹狀圖 |
-n | 用程序識別碼排序。預設是以程序名稱來排序 |
-p | 顯示程序識別碼 |
-u | 顯示用戶名稱 |
–U | 使用UTF |
-V | 顯示版本信息 |
如果要以長列格式顯示樹狀圖,并且顯示每個進程的完整指令,則可以在命令行輸入“pstree –a –l”,回車執行,輸出內容如圖8-23所示。
圖8-23 “pstree –a –l”命令顯示的進程信息
8.2.6 Linux操作系統進程終止技術
Linux操作系統也有結束進程的對應方法,在RedHat 9系統中,終止一個進程或正在運行的程序,一般是通過kill、killall、pkill等命令進行操作。
下面結合實例給大家具體介紹一下,這些命令是如何應用于具體的工作當中。首先,看一下kill命令,這里給大家介紹一個通用的查看命令幫助的方法,通常可以用“man命令”的方式來查看該命令的幫助信息,如查看kill命令幫助,則可以在終端命令窗口輸入“man kill”,回車執行,顯示如圖8-24所示信息,可以輸入“q”退出幫助信息查看。
圖8-24 “kill”命令幫助信息
1.示例一
運行“ps aux | grep gnome”命令查看當前系統運行的進程名包含“gnome”的進程,可以看到,pid為“2151”的則是系統自帶的“字典”應用程序,如圖8-25所示,如果要將這個程序關閉,可以輸入命令“kill 2151”,則關閉了“字典”程序(從界面上消失),再輸入“ps aux | grep gnome”命令,查看“字典”程序已經不存在,如圖8-26所示。
圖8-25 “ps aux | grep gnome”輸出信息
圖8-26 “kill 2151”、“ps aux | grep gnome”命令輸出信息
2.示例二
一個程序已經徹底關閉,如果kill不加信號強度(signal)沒有辦法退出,這時,最好的辦法就是加信號強度9,后面指出要殺死的“僵尸”進程PID,例如,需要關閉“Emacs”,通過“ps aux”命令,可以查看到“Emacs”的PID為“1938”,先需要強制關閉該程序,可以輸入“kill -9 1938”,如圖8-27所示,命令執行完成以后,“Emacs”程序就會被關閉。
圖8-27 “kill -9 1938”強制終止進程命令
3.示例三
當然,還可以通過應用killall命令來終止某一個程序或者進程,如要結束“文本編輯器”程序,可以輸入“killall gedit”,回車執行,如圖8-28所示,killall是通過命令空格正在運行的程序名來結束某個程序的,如果想獲得更多的關于該命令的應用信息,請使用前面介紹的“man”命令。
圖8-28 “killall gedit”終止文本編輯器命令
4.示例四
pkill和killall命令應用方法差不多,也是直接關閉運行中的程序。如果想關閉單個進程,請用kill命令,如要結束“文本編輯器”程序,可以輸入“pkill gedit”,回車執行,如圖8-29所示。pkill命令是通過命令空格正在運行的程序名來結束某個程序的,如果想獲得更多的關于該命令的應用信息,請使用前面介紹的“man”命令。
圖8-29 “pkill gedit”終止文本編輯器命令
(未完待續)
版權聲明:51Testing軟件測試網及相關內容提供者擁有51testing.com內容的全部版權,未經明確的書面許可,任何人或單位不得對本網站內容復制、轉載或進行鏡像。51testing軟件測試網歡迎與業內同行進行有益的合作和交流,如果有任何有關內容方面的合作事宜,請聯系我們。
相關鏈接:
posted on 2013-07-03 11:20 順其自然EVO 閱讀(356) 評論(0) 編輯 收藏 所屬分類: loadrunner 、性能測試