linux系統常用的性能分析指令有ps pstree及top等,今天我們詳細看下各指令的使用
1.ps
ps指令是平時比較常用的檢視程序的指令,ps 是顯示瞬間程序的狀态,并不動态變化;如果想對程序運作時間監控,需要用 top 工具。
ps指令就是最基本、也是非常強大的程序檢視指令。根據顯示的資訊可以确定哪個程序正在運作、哪個程序被挂起、程序已運作了多久、程序正在使用的資源、程序的相對優先級,以及程序的标志号(PID)。所有這些資訊對使用者都很有用,對于系統管理者來說更為重要。
常用參數:
-A 列出所有的行程
-w 顯示加寬可以顯示較多的資訊
-au 顯示較詳細的資訊
-aux 顯示所有包含其他使用者的行程
-e 顯示所有程序,環境變量
-f 全格式
-h 不顯示标題
-l 長格式
-w 寬輸出
a 顯示終端上地所有程序,包括其他使用者地程序
r 隻顯示正在運作地程序
x 顯示沒有控制終端地程序
我們常用的選項是組合是 aux 或 lax,還有參數 f 的應用。
比較常用的是ps -ef |grep XXXX 及ps -aux 等 可以顯示程序的pid号友善kill掉假死及想要關閉的程序。
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiInBnauIDO2Y2MlNWNjNDOmZzNmFWNycTZ2EWN1U2YzEjY2UzYfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.jpg)
2.pstree
pstree:顯示程序狀态樹,pstree指令可以列出目前的程序,以及它們的樹狀結構。 主要選項如下。
-a:顯示執行程式的指令與完整參數。
-c:取消同名程式,合并顯示。
-n:以PID大小排序。
-p:顯示PID。
-u:顯示UID資訊。
使用ps指令得到的資料精确,但資料龐大,這一點對掌握系統整體概況來說是不容易的。pstree指令正好可以彌補這個缺憾。它能将目前的執行程式以樹狀結構顯示。pstree指令支援指定特定程式(PID)或使用者(USER)作為顯示的起始。
常用的指令
pstree -a顯示全部資訊
pstree -p顯示程序pid号
3.top
top指令用來顯示系統目前的程序狀況。
top是一個動态顯示過程,即可以通過使用者按鍵來不斷重新整理目前狀态.如果在前台執行該指令,它将獨占前台,直到使用者終止該程式為止.比較準确的說,top
指令提供了實時的對系統處理器的狀态監視.它将顯示系統中CPU最“敏感”的任務清單.該指令可以按CPU使用.記憶體使用和執行時間對任務進行排序;而且
該指令的很多特性都可以通過互動式指令或者在個人定制檔案中進行設定.
第一行表示的項目依次為
16:00 目前時間
updays 15 系統啟動時間
users目前系統登入使用者數目
load average 平均負載。三個數值分别為 1分鐘、5分鐘、15分鐘前到現在的平均值
第二行顯示的是所有啟動的、目前運作的、挂起(Sleeping)的和無用(Zombie)的程序。
Tasks: 504 total 程序總數 1 running 正在運作的程序數 503sleeping 睡眠的程序數 0 stopped 停止的程序數 0 zombie 僵屍程序數 第三行顯示的是目前CPU的使用情況,包括系統占用的比例、使用者使用比例、閑置(Idle)比例。 Cpu(s): 0.3% us 使用者空間占用CPU百分比 1.0% sy 核心空間占用CPU百分比 0.0% ni 使用者程序空間内改變過優先級的程序占用CPU百分比 100% id 空閑CPU百分比 0.0% wa 等待輸入輸出的CPU時間百分比 0.0% hi 0.0% si |
第四行顯示實體記憶體的使用情況,包括總的可以使用的記憶體、已用記憶體、空閑記憶體、緩沖區占用的記憶體 Mem: 16280612k total 實體記憶體總量 879588k used 使用的實體記憶體總量 15401024k free 空閑記憶體總量 110296k buffers 用作核心緩存的記憶體量 第五行顯示交換分區的使用情況,包括總的、使用的、空閑的和用于高速緩存的交換分區。 Swap: 8191992k total 交換區總量 0 k used 使用的交換區總量 8191992k free 空閑交換區總量 491708k cached 緩沖的交換區總量。 記憶體中的内容被換出到交換區,而後又被換入到記憶體,但使用過的交換區尚未被覆寫,該數值即為這些内容已存在于記憶體中的交換區的大小。 相應的記憶體再次被換出時可不必再對交換區寫入。 程序資訊區統計資訊區域的下方顯示了各個程序的詳細資訊 PID 程序id PPID 父程序id RUSER Real user name UID 程序所有者的使用者id USER 程序所有者的使用者名 GROUP 程序所有者的組名 TTY 啟動程序的終端名。不是從終端啟動的程序則顯示為 ? PR 優先級 NI nice值。負值表示高優先級,正值表示低優先級 P 最後使用的CPU,僅在多CPU環境下有意義 %CPU 上次更新到現在的CPU時間占用百分比 TIME+ 程序使用的CPU時間總計,機關1/100秒 %MEM 程序使用的實體記憶體百分比 VIRT 程序使用的虛拟記憶體總量,機關kb。VIRT=SWAP+RES SWAP 程序使用的虛拟記憶體中,被換出的大小,機關kb。 RES 程序使用的、未被換出的實體記憶體大小,機關kb。RES=CODE+DATA CODE 可執行代碼占用的實體記憶體大小,機關kb DATA 可執行代碼以外的部分(資料段+棧)占用的實體記憶體大小,機關kb SHR 共享記憶體大小,機關kb nFLT 頁面錯誤次數 nDRT 最後一次寫入到現在,被修改過的頁面數。 S 程序狀态。 D=不可中斷的睡眠狀态 R=運作 S=睡眠 T=跟蹤/停止 Z=僵屍程序 COMMAND 指令名/指令行 WCHAN 若該程序在睡眠,則顯示睡眠中的系統函數名 Flags 任務标志,參考 sched.h 一般常用到的參數 d 指定每兩次螢幕資訊重新整理之間的時間間隔。當然使用者可以使用s互動指令來改變之。 p 通過指定監控程序ID來僅僅監控某個程序的狀态。 q該選項将使top沒有任何延遲的進行重新整理。如果調用程式有超級使用者權限,那麼top将以盡可能高的優先級運作。 S 指定累計模式 s 使top指令在安全模式中運作。這将去除互動指令所帶來的潛在危險。 i 使top不顯示任何閑置或者僵死程序。 c 顯示整個指令行而不隻是顯示指令名 |