Linux監控命令全解
1.1 top
1.1.1 命令說明
Top 命令能夠實時監控系統的執行狀態,並且可以按照cpu、記憶體和執行時間進行排序
1.1.2 引數說明
- 命令列啟動引數:
- 用法: top -hv | -bcisSHM -d delay -n iterations [-u user | -U user] -p pid [,pid ...]
- -b : 批次模式執行。通常用作來將top的輸出的結果傳送給其他程式或儲存成檔案
- -c : 顯示執行任務的命令列
- -d : 設定延遲時間
- -h : 幫助
- -H : 顯示執行緒。當這個設定開啟時,將顯示所有程式產生的執行緒
- -i : 顯示空閒的程式
- -n : 執行次數。一般與-b搭配使用
- -u : 監控指定使用者相關程式
- -U : 監控指定使用者相關程式
- -p : 監控指定的程式。當監控多個程式時,程式ID以逗號分隔。這個選項只能在命令列下使用
- -s : 安全模式操作
- -S : 累計時間模式
- -v : 顯示top版本,然後退出。
- -M : 自動顯示記憶體單位(k/M/G)
1.全域性命令
- 回車、空格 : 重新整理顯示資訊
- ?、h : 幫助
- = : 移除所有任務顯示的限制
- A : 交替顯示模式切換
- B : 粗體顯示切換
- d、s : 更改介面重新整理時間間隔
- G : 選擇其它視窗/欄位組
- I : Irix或Solaris模式切換
- u、U : 監控指定使用者相關程式
- k : 結束程式
- q : 退出top
- r : 重新設定程式的nice值
- W : 儲存當前設定
- Z : 改變顏色模板
2.摘要區命令
- l : 平均負載及系統執行時間顯示開關
- m : 記憶體及交換空間使用率顯示開關
- t : 當前任務及CPU狀態顯示開關
1 : 彙總顯示CPU狀態或分開顯示每個CPU狀態
1.任務區命令
- 外觀樣式
- b : 黑體/反色顯示高亮的行/列。控制x和y互動命令的顯示樣式
- x : 高亮顯示排序的列
- y : 高亮顯示正在執行的任務
- z : 彩色/黑白顯示。
- 顯示內容
- c : 任務執行的命令列或程式名稱
- f、o : 增加和移除程式資訊欄位及調整程式資訊欄位顯示順序
- H : 顯示執行緒
- S : 時間累計模式
- u : 監控指定使用者相關程式
- 任務顯示的數量
- i : 顯示空閒的程式
- n或# : 設定任務顯示最大數量
- 任務排序(shift+f)
- M : 按記憶體使用率排序
- N : 按PID排序
- P : 按CPU使用率排序
- T : 按Time+排序
- < : 按當前排序欄位左邊相鄰欄位排序
- > : 按當前排序欄位右邊相鄰欄位排序
- F 或 O : 選擇排序欄位
- R : 反向排序
1.1.3 結果說明
1.2 free
1.2.1 命令說明
Free命令是監控系統記憶體最常用的命令
1.2.2.引數說明
-m:以M為單位檢視記憶體使用情況(預設為kb)
-b:以位元組為單位檢視記憶體使用情況
-s:可以在指定時間段內不簡單監控記憶體的使用情況
1.2.3 結果說明
- total:總計實體記憶體的大小。
- Used:已使用多大。
- Free:可用有多少。
- shared:多個程式共享的記憶體總額。
- buffers/cached:磁碟快取的大小。
1.3 vmstat
1.1.1命令說明
可以監控作業系統的程式狀態、記憶體、虛擬記憶體、磁碟IO、上下文、CPU的資訊。
1.1.2引數說明
vmstat [-a] [-n] [-S unit] [delay [ count]]
- -a:顯示活躍和非活躍記憶體
- -m:顯示slabinfo
- -n:只在開始時顯示一次各欄位名稱。
- -s:顯示記憶體相關統計資訊及多種系統活動數量。
- delay:重新整理時間間隔。如果不指定,只顯示一條結果。
- count:重新整理次數。如果不指定重新整理次數,但指定了重新整理時間間隔,這時重新整理次數為無窮。
- -d:顯示各個磁碟相關統計資訊。
- -S:使用指定單位顯示。引數有 k 、K 、m 、M ,分別代表1000、1024、1000000、1048576位元組(byte)。預設單位為K(1024 bytes)
- -V:顯示vmstat版本資訊。
- -p:顯示指定磁碟分割槽統計資訊
- -D:顯示磁碟總體資訊
1.1.3 結果說明
- Procs
- R:等待被執行的程式數,即表示執行和等待CPU時間片的程式數
- B:排隊的程式數,即等待資源的程式數
- Memory
- Swap : 虛擬記憶體,切換到虛擬記憶體的記憶體大小
- Free: 空閒的實體記憶體大小
- Buff: 緩衝區大小
- Cache: 快取大小
- Swap
- Si:磁碟寫入虛擬記憶體,即由記憶體進入到虛擬記憶體的大小。
- So:虛擬記憶體寫入磁碟,即由虛擬記憶體進入到磁碟的大小。
Io
- Bi:由塊裝置讀入的資料總量,讀磁碟
- Bo:由塊裝置寫入的資料總量,寫磁碟
- System
- In: 每秒裝置中斷數
- Cs:每秒上下文切換的次數
- Cpu
- Us:使用者程式消耗cpu百分比
- Sy:核心程式消耗cpu百分比
- Id:cpu處於空閒狀態的時間百分比
- Wa:Io等待cpu所佔時間的百分比
1.4 iostat
1.4.1命令說明
Iostat是對系統磁碟IO操作進行監控,它的輸出主要顯示磁碟的讀寫操作的統計資訊。同時給出cpu的使用情況
1.4.2引數說明
iostat [ -c | -d ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ device [ ... ] | ALL ] [ -p [ device | ALL ] ] [ interval [ count ] ]
各選項以及引數含義如下:
- -c: 僅顯示CPU統計資訊.與-d選項互斥.
- -d :僅顯示磁碟統計資訊.與-c選項互斥.
- -k :以K為單位顯示每秒的磁碟請求數,預設單位塊.
- -p :device | ALL
與-x選項互斥,用於顯示塊裝置及系統分割槽的統計資訊.也可以在-p後指定一個裝置名,如:
# iostat -p had
或顯示所有裝置
# iostat -p ALL
- -t :在輸出資料時,列印蒐集資料的時間.
- -V :列印版本號和幫助資訊.
- -x device 輸出指定要統計的磁碟裝置名稱,預設為所有磁碟裝置.
- - interval :指兩次統計間隔時間
- - count :按照interval 指定的時間間隔統計的次數
1.4.3結果說明
Iostat的簡單應用
Iostat磁碟監控
- rrqm/s:每秒進行 merge 的讀運算元目,即 delta(rmerge)/s 。
- wrqm/s:每秒進行 merge 的寫運算元目,即 delta(wmerge)/s 。
- r/s:每秒完成的讀 I/O 裝置次數,即 delta(rio)/s 。
- w/s: 每秒完成的寫 I/O 裝置次數,即 delta(wio)/s 。
- rsec/s:每秒讀扇區數,即 delta(rsect)/s。
- wsec/s:每秒寫扇區數,即 delta(wsect)/s
- rkB/s:每秒讀K位元組數,是 rsect/s 的一半,因為每扇區大小為512位元組。
- wkB/s:每秒寫K位元組數,是 wsect/s 的一半
- avgrq-sz:平均每次裝置I/O操作的資料大小 (扇區),即 delta(rsect+wsect)/delta(rio+wio) 。
- avgqu-sz:平均I/O佇列長度,即 delta(aveq)/s/1000 (因為aveq的單位為毫秒)。
- Await:平均每次裝置I/O操作的等待時間 (毫秒),即 delta(ruse+wuse)/delta(rio+wio) 。
- Svctm:平均每次裝置I/O操作的服務時間 (毫秒),即 delta(use)/delta(rio+wio) 。
- %util:一秒中有百分之多少的時間用於 I/O 操作,或者說一秒中有多少時間 I/O 佇列是非空的,
即 delta(use)/s/1000 (因為use的單位為毫秒) 。
Iostat cpu 監控
- %usr:使用者程式消耗的CPU時間百分比。
- %nice: 執行正常程式消耗的CPU時間百分比。
- %system:系統程式消耗的CPU時間百分比。
- %iowait:I/O等待所佔CPU時間百分比。
- %steal:在記憶體緊張環境下,pagein強制對不同的頁面進行的steal操作。
- %idle:CPU空閒狀態的時間百分比。
1.5 mpstat
1.5.1命令說明
Mpstat可以監控到cpu的一些統計資訊,在多核cpu的系統裡不但能夠檢視所有cpu的平均狀況資訊,而且能夠檢視特定的cpu的資訊
1.5.2引數說明
mpstat [-P {|ALL}] [internal [count]]
引數:
- (1)-P {|ALL}:表示監控哪個CPU,在[0,cpu個數-1]中取值;
- (2)internal:相鄰的兩次取樣的間隔時間;
- (3)count:取樣的次數,count只能和delay一起使用;
備註:當沒有引數時,mpstat則顯示系統啟動以後所有資訊的平均值。有interval時,第一行的資訊自系統啟動以來的平均資訊。從第二行開始,輸出為前一個interval時間段的平均資訊。
1.5.3結果說明
- (1)user:在internal時間段裡,使用者態的CPU時間(%),不包含nice值為負程式,值為 (usr/total)*100;
- (2)nice:在internal時間段裡,nice值為負程式的CPU時間(%),值為(nice/total)*100;
- (3)system:在internal時間段裡,核心時間(%),值為(system/total)*100;
- (4)iowait:在internal時間段裡,硬碟IO等待時間(%),值為(iowait/total)*100;
- (5)irq:在internal時間段裡,硬中斷時間(%),值為(irq/total)*100;
- (6)soft:在internal時間段裡,軟中斷時間(%),值為(softirq/total)*100;
- (7)idle:在internal時間段裡,CPU除去等待磁碟IO操作外的因為任何原因而空閒的時間閒置時間(%),值為(idle/total)*100;
- (8)intr/s:在internal時間段裡,每秒CPU接收的中斷的次數,值為(intr/total)*100;
1.6 sar
1.6.1命令說明
Sar命令可以全名的獲取到cpu 、執行、磁碟IO、虛擬記憶體、記憶體、網路等資訊。
1.6.2引數說明
sar 命令列的常用格式:
sar [options] [-A] [-o file] t [n]
在命令列中,n 和t 兩個引數組合起來定義取樣間隔和次數,t為取樣間隔,是必須有的引數,n為取樣次數,是可選的,預設值是1,-o file表示將命令結果以二進位制格式存放在檔案中,file 在此處不是關鍵字,是檔名。options 為命令列選項,sar命令的選項很多,下面只列出常用選項:
- -A:所有報告的總和。
- -u:CPU利用率
- -v:程式、節點、檔案和鎖表狀態。
- -p:像是當前系統中指定CPU使用資訊。
- -d:硬碟使用報告。
- -r:顯示系統記憶體的使用情況。
- -n:顯示網路執行狀態。引數後面可跟DEV、EDEV、SOCK和FULL。DEV顯示網路介面資訊,EDEV顯示網路錯誤的統計資料,SOCK顯示套接字資訊,FULL顯示前三引數所有資訊。
- -q:顯示執行佇列的大小,它與系統當時的平均負載相同
- -B:記憶體分頁情況
- -R:顯示程式在取樣時間內的活動情況。
- -g:串列埠I/O的情況。
- -b:緩衝區使用情況。
- -a:檔案讀寫情況。
- -c:系統呼叫情況。
- -R:程式的活動情況。
- -y:終端裝置活動情況。
- -W:系統交換活動。
1.6.3結果說明
Cpu資源監控
CPU:all 表示統計資訊為所有 CPU 的平均值。
- %user:顯示在使用者級別(application)執行使用 CPU 總時間的百分比。
- %nice:顯示在使用者級別,用於nice操作,所佔用 CPU 總時間的百分比。
- %system:在核心級別(kernel)執行所使用 CPU 總時間的百分比。
- %iowait:顯示用於等待I/O操作佔用 CPU 總時間的百分比。
- %steal:管理程式(hypervisor)為另一個虛擬程式提供服務而等待虛擬 CPU 的百分比。
- %idle:顯示 CPU 空閒時間佔用 CPU 總時間的百分比。
1. 若 %iowait 的值過高,表示硬碟存在I/O瓶頸
2. 若 %idle 的值高但系統響應慢時,有可能是 CPU 等待分配記憶體,此時應加大記憶體容量
1. 若 %idle 的值持續低於1,則系統的 CPU 處理能力相對較低,表明系統中最需要解決的資源是 CPU 。
如果要檢視二進位制檔案test中的內容,需鍵入如下sar命令:
sar -u -f test
Inode、檔案和其他核心表監控
- Dentunued: 目錄告訴快取中未被使用的條目數量
- File-nr: 檔案控制程式碼的使用數量
- Inode-nr: 索引節點控制程式碼的使用數量
- Pty-nr :使用的pty的數量
記憶體和交換空間監控
- kbmemfree:這個值和free命令中的free值基本一致,所以它不包括buffer和cache的空間.
- kbmemused:這個值和free命令中的used值基本一致,所以它包括buffer和cache的空間.
- %memused:這個值是kbmemused和記憶體總量(不包括swap)的一個百分比.
- kbbuffers和kbcached:這兩個值就是free命令中的buffer和cache.
- kbcommit:保證當前系統所需要的記憶體,即為了確保不溢位而需要的記憶體(RAM+swap).
- %commit:這個值是kbcommit與記憶體總量(包括swap)的一個百分比.
記憶體分頁監控
- pgpgin/s:表示每秒從磁碟或SWAP置換到記憶體的位元組數(KB)
- pgpgout/s:表示每秒從記憶體置換到磁碟或SWAP的位元組數(KB)
- fault/s:每秒鐘系統產生的缺頁數,即主缺頁與次缺頁之和(major + minor)
- majflt/s:每秒鐘產生的主缺頁數.
- pgfree/s:每秒被放入空閒佇列中的頁個數
- pgscank/s:每秒被kswapd掃描的頁個數
- pgscand/s:每秒直接被掃描的頁個數
- pgsteal/s:每秒鐘從cache中被清除來滿足記憶體需要的頁個數
- %vmeff:每秒清除的頁(pgsteal)佔總掃描頁(pgscank+pgscand)的百分比
IO和傳送速率監控
- tps:每秒鐘物理裝置的 I/O 傳輸總量
- rtps:每秒鐘從物理裝置讀入的資料總量
- wtps:每秒鐘向物理裝置寫入的資料總量
- bread/s:每秒鐘從物理裝置讀入的資料量,單位為 塊/s
- bwrtn/s:每秒鐘向物理裝置寫入的資料量,單位為 塊/s
程式佇列長度和平均負載狀態監控
- runq-sz:執行佇列的長度(等待執行的程式數)
- plist-sz:程式列表中程式(processes)和執行緒(threads)的數量
- ldavg-1:最後1分鐘的系統平均負載(System load average)
- ldavg-5:過去5分鐘的系統平均負載
- ldavg-15:過去15分鐘的系統平均負載
系統交換活動資訊監控
- pswpin/s:每秒系統換入的交換頁面(swap page)數量
- pswpout/s:每秒系統換出的交換頁面(swap page)數量
裝置使用情況監控
- 引數-p可以列印出sda,hdc等磁碟裝置名稱,如果不用引數-p,裝置節點則有可能是dev8-0,dev22-0
- tps:每秒從物理磁碟I/O的次數.多個邏輯請求會被合併為一個I/O磁碟請求,一次傳輸的大小是不確定的.
- rd_sec/s:每秒讀扇區的次數.
- wr_sec/s:每秒寫扇區的次數.
- avgrq-sz:平均每次裝置I/O操作的資料大小(扇區).
- avgqu-sz:磁碟請求佇列的平均長度.
- await:從請求磁碟操作到系統完成處理,每次請求的平均消耗時間,包括請求佇列等待時間,單位是毫秒(1秒=1000毫秒).
- svctm:系統處理每次請求的平均時間,不包括在請求佇列中消耗的時間.
- %util:I/O請求佔CPU的百分比,比率越大,說明越飽和.
1. avgqu-sz 的值較低時,裝置的利用率較高。
2. 當%util的值接近 1% 時,表示裝置頻寬已經佔滿。
1.7 netstat
1.7.1命令說明
Netstat 命令用於顯示本機網路連結、執行埠、路由表等資訊
1.7.2引數說明
netstat [選項]
- -a (all):顯示一個所有的有效連線資訊列表,包括已建立的連線(ESTABLISHED),也包括監聽連線請求(LISTENING)的那些連線,斷開連線(CLOSE_WAIT)或者處於聯機等待狀態的(TIME_WAIT)等
- -t (tcp):顯示tcp相關選項
- -u (udp):僅顯示udp相關選項
- -n :拒絕顯示別名,能顯示數字的全部轉化成數字。
- -l :僅列出有在 Listen (監聽) 的服務狀態
- -p :顯示建立相關連結的程式名
- -r :顯示路由資訊,路由表,除了顯示有效路由外,還顯示當前有效的連線
- -e :顯示擴充套件資訊,例如uid等
- -s :按各個協議進行統計
- -c :每隔一個固定時間,執行該netstat命令。
- -v :顯示當前的有效連線,與-n選項類似
- -I :顯示自動匹配介面的資訊
- -e :顯示關於乙太網的統計資料。它列出的專案包括傳送的資料包的總位元組數、錯誤數、刪除數、資料包的數量和廣播的數量。這些統計資料既有傳送的資料包數量,也有接收的資料包數量。這個選項可以用來統計一些基本的網路流量。
提示:LISTEN和LISTENING的狀態只有用-a或者-l才能看到
1.7.3結果說明
- Iface:表示網路裝置的介面名稱。
- MTU:表示最大傳輸單元,單位為位元組。
- RX-OK/TX-OK:表示已經準確無誤地接收/傳送了多少資料包。
- RX-ERR/TX-ERR:表示接收/傳送資料包時候產生了多少錯誤。
- RX-DRP/TX-DRP:表示接收/傳送資料包時候丟棄了多少資料包。
- RX-OVR/TX-OVR:表示由於誤差而丟失了多少資料包。
- Flg表示介面標記,其中
B 已經設定了一個廣播地址。
L 該介面是一個回送裝置。
M 接收所有資料包(混亂模式)。
N 避免跟蹤。
O 在該介面上,禁用A R P。
P 這是一個點到點連結。
R 介面正在執行。
U 介面處於“活動”狀態。
其中RX-ERR/TX-ERR、 RX-DRP/TX-DRP和RX-OVR/TX-OVR的值應該都為0,如果不為0,並且很大,那麼網路質量肯定有問題,網路傳輸效能也一代會下降。
- Recv-Q:表示接收佇列。
- Send-Q :表示傳送佇列。
- Local Address :表示本地機器名、埠
- Foreign Address :表示遠端機器名、埠
- State:表示狀態,其中
LISTEN :在監聽狀態中。
ESTABLISHED:已建立聯機的聯機情況。
TIME_WAIT:該聯機在目前已經是等待的狀態。
1.8 uptime
1.8.1 命令說明
Uptime主要是用來統計系統當前的執行狀態
1.8.2引數說明
-V 顯示版本
1.8.3 結果說明
- 輸出資訊依次是:系統現在的時間,系統從上次開機到現在執行了多長時間,系統當前有多少個登入使用者,系統在一分鐘內、5分鐘內、15分鐘內的平均負載
- 注意點:如果load average值長期大於系統CPU的個數則說明CPU很繁忙,負載很高,可能會影響系統效能
1.9 ps
1.9.1命令說明
Ps命令是程式檢視命令,使用這個命令可以確定有哪些程式正在執行和執行的狀態、程式是否結束、程式有沒有僵死、哪些程式佔用了過多的資源等。
1.9.2引數說明
常用引數:
- -A 顯示所有程式(等價於-e)(utility)
- -a 顯示一個終端的所有程式,除了會話引線
- -N 忽略選擇。
- -d 顯示所有程式,但省略所有的會話引線(utility)
- -x 顯示沒有控制終端的程式,同時顯示各個命令的具體路徑。dx不可合用。(utility)
- -p pid 程式使用cpu的時間
- -u uid or username 選擇有效的使用者id或者是使用者名稱
- -g gid or groupname 顯示組的所有程式。
- U username 顯示該使用者下的所有程式,且顯示各個命令的詳細路徑。如:ps U zhang;(utility)
- -f 全部列出,通常和其他選項聯用。如:ps -fa or ps -fx and so on.
- -l 長格式(有F,wchan,C 等欄位)
- -j 作業格式
- -o 使用者自定義格式。
- v 以虛擬儲存器格式顯示
- s 以訊號格式顯示
- -m 顯示所有的執行緒
- -H 顯示程式的層次(和其它的命令合用,如:ps -Ha)(utility)
- e 命令之後顯示環境(如:ps -d e; ps -a e)(utility)
- h 不顯示第一行
常用用法:
- ps a: 顯示現行終端機下的所有程式,包括其他使用者的程式。
- ps -A :顯示所有程式。
- ps c :列出程式時,顯示每個程式真正的指令名稱,而不包含路徑,引數或常駐服務的標示。
- ps -e :此引數的效果和指定”A”引數相同。
- ps e :列出程式時,顯示每個程式所使用的環境變數。
- ps f :用ASCII字元顯示樹狀結構,表達程式間的相互關係。
- ps -H:顯示樹狀結構,表示程式間的相互關係。
- ps –N:顯示所有的程式,除了執行ps指令終端機下的程式之外。
- ps s:採用程式訊號的格式顯示程式狀況。
- ps S :列出程式時,包括已中斷的子程式資料。
- ps -t<終端機編號> :指定終端機編號,並列出屬於該終端機的程式的狀況。
- ps u:以使用者為主的格式來顯示程式狀況。
- ps x:顯示所有程式,不以終端機來區分。
- Ps -l:較長較詳細的顯示該pid資訊
最常用的方法是ps -aux,然後再利用一個管道符號導向到grep去查詢特定的程式,然後再對特定的程式進行操作。
1.9.3結果說明
- USER 使用者名稱
- UID 使用者ID(User ID)
- PID 程式ID(Process ID)
- PPID 父程式的程式ID(Parent Process id)
- SID 會話ID(Session id)
- %CPU 程式的cpu佔用率
- %MEM 程式的記憶體佔用率
- VSZ 程式所使用的虛存的大小(Virtual Size)
- RSS 程式使用的駐留集大小或者是實際記憶體的大小,Kbytes位元組。
- TTY 與程式關聯的終端(tty)
- STAT 程式的狀態:程式狀態使用字元表示的(STAT的狀態碼)
- R 執行 Runnable (on run queue) 正在執行或在執行佇列中等待。
- S 睡眠 Sleeping 休眠中, 受阻, 在等待某個條件的形成或接受到訊號。
- I 空閒 Idle
- Z 僵死 Zombie(a defunct process) 程式已終止, 但程式描述符存在, 直到父程式呼叫wait4()系統呼叫後釋放。
- D 不可中斷 Uninterruptible sleep (ususally IO) 收到訊號不喚醒和不可執行, 程式必須等待直到有中斷髮生。
- T 終止 Terminate 程式收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU訊號後停止執行執行。
- P 等待交換頁
- W 無駐留頁 has no resident pages 沒有足夠的記憶體分頁可分配。
- X 死掉的程式
- < 高優先順序程式 高優先序的程式
- N 低優先 級程式 低優先序的程式
- L 記憶體鎖頁 Lock 有記憶體分頁分配並縮在記憶體內
- s 程式的領導者(在它之下有子程式);
- l 多程式的(使用 CLONE_THREAD, 類似 NPTL pthreads)
- + 位於後臺的程式組
- START 程式啟動時間和日期
- TIME 程式使用的總cpu時間
- COMMAND 正在執行的命令列命令
- NI 優先順序(Nice)
- PRI 程式優先順序編號(Priority)
- WCHAN 程式正在睡眠的核心函式名稱;該函式的名稱是從/root/system.map檔案中獲得的。
- FLAGS 與程式相關的數字標識
1.10 watch
1.10.1命令說明
實時監測命令,還可以檢測其他命令執行情況的命令
1.10.2引數說明
- -d 高亮顯示變動
- -n 週期(秒)
1.10.3結果說明
Watch –d –n 1 netstat -ant
每秒監測網路,高亮顯示變化。
1.11 strace
1.11.1命令說明
Strace命令用來跟蹤程式執行時的系統呼叫和所接收的訊號。在Linux世界,程式不能直接訪問硬體裝置,當程式需要訪問硬體裝置(比如讀取磁碟檔案,接收網路資料等等)時,必須由使用者態模式切換至核心態模式,通過系統呼叫訪問硬體裝置。strace可以跟蹤到一個程式產生的系統呼叫,包括引數,返回值,執行消耗的時間
1.11.2引數說明
strace使用引數
- -p:跟蹤指定的程式。
- -f:跟蹤由fork子程式系統呼叫。
- -F:嘗試跟蹤vfork子程式系統調吸入,與-f同時出現時, vfork不被跟蹤。
- -o filename:預設strace將結果輸出到stdout。通過-o可以將輸出寫入到filename檔案中。
- -ff:常與-o選項一起使用,不同程式(子程式)產生的系統呼叫輸出到filename.PID文
- -r:列印每一個系統呼叫的相對時間。
- -t:在輸出中的每一行前加上時間資訊。 -tt 時間確定到微秒級。還可以使用-ttt列印相對時間。
- -v:輸出所有系統呼叫。預設情況下,一些頻繁呼叫的系統呼叫不會輸出。
- -s:指定每一行輸出字串的長度,預設是32。檔名一直全部輸出。
- -c:統計每種系統呼叫所執行的時間,呼叫次數,出錯次數。
- -e expr:輸出過濾器,通過表示式,可以過濾出掉你不想要輸出。
- -d:輸出strace關於標準錯誤的除錯資訊。
- -h:輸出簡要的幫助資訊。
- -i:輸出系統呼叫的入口指標。
- -q:禁止輸出關於脫離的訊息。
- -tt:在輸出中的每一行前加上時間資訊,微秒級。
- -T:顯示每一呼叫所耗的時間。
- -V :輸出strace的版本資訊。
- -x:以十六進位制形式輸出非標準字串。
- -xx:所有字串以十六進位制形式輸出。
1.11.3結果說明
strace -ff -F -o ls.log ls –l 跟蹤ls –l命令的執行情況
當某個函式執行失敗時,那麼返回值一般為-1
1.12 lsof
1.12.1命令說明
Lsof的原始功能是列出開啟的檔案的程式。Linux下一切皆檔案。
1.12.2引數說明
- -a :列出開啟檔案存在的程式
- -c<程式名> :列出指定程式所開啟的檔案
- -g :列出GID號程式詳情
- -d<檔案號> :列出佔用該檔案號的程式
- +d<目錄> :列出目錄下被開啟的檔案
- +D<目錄> :遞迴列出目錄下被開啟的檔案
- -n<目錄> :列出使用NFS的檔案
- -i<條件> :列出符合條件的程式。
- -p<程式號>: 列出指定程式號所開啟的檔案
- -u 後面跟username:列出該使用者相關程式所開啟檔案
- -U :僅列出系統socket檔案型別
- -h:顯示幫助資訊
- -v:顯示版本資訊
1.12.3結果說明
列出所有root使用者下的socket檔案程式
- COMMAND:程式的名稱
- PID:程式識別符號
- USER:程式所有者
- FD:檔案描述符,應用程式通過檔案描述符識別該檔案。如cwd、txt等
- TYPE:檔案型別,如DIR、REG等
- DEVICE:指定磁碟的名稱
- SIZE:檔案的大小
- NODE:索引節點(檔案在磁碟上的標識)
- NAME:開啟檔案的確切名稱
如有遺漏處,歡迎評論,逐漸補充。
相關文章
- 幾個常用的linux效能監控命令Linux
- Linux中監控系統效能常用的命令!Linux
- 進行Linux效能監控的命令介紹Linux
- Linux 監控Linux
- IO實時監控命令iostat詳解iOS
- 無監控,不運維:解讀企業全棧式監控運維運維全棧
- GoldenGate GGSCI監控命令Go
- 監控 Linux 伺服器活動的幾個命令Linux伺服器
- 監控 redis 執行命令Redis
- 如何使用 Glances 命令監控
- Linux 效能監控工具Linux
- linux監控工具auditLinux
- Linux自學篇——linux命令英文全稱及解釋Linux
- INFORMIX的監控和管理命令ORM
- What! 一條命令搞定監控?
- Linux 命令 less 全知全會Linux
- Linux 命令 man 全知全會Linux
- Linux 流量監控工具 iftopLinux
- linux監控平臺搭建Linux
- Linux 系統監控指南Linux
- Linux中監控磁碟分割槽及使用情況的命令有哪些?Linux
- 一文詳解Linux系統常用監控工具Linux
- k8s全棧監控K8S全棧
- 一條命令開啟監控之旅!
- linux系統 物理硬碟監控Linux硬碟
- Linux程式管理與效能監控Linux
- 注意啦!10 個你需要了解的 Linux 網路和監控命令Linux
- Redis 常用監控資訊命令總結Redis
- DBA常用系統監控命令(之一)
- Linux伺服器效能追蹤以及伺服器監控常用命令Linux伺服器
- Linux伺服器---流量監控ntopLinux伺服器
- Linux伺服器---流量監控webalizerLinux伺服器Web
- Linux伺服器---流量監控MRTGLinux伺服器
- linux安裝Arthas監控java程式LinuxJava
- 使用CloudStats監控Linux伺服器CloudLinux伺服器
- Linux伺服器---流量監控bandwidthdLinux伺服器
- zabbix5.0監控安全配置全過程
- Java命令列監控工具(jmap,jstack,jstat,jinfoJava命令列JS
- ss命令結合zabbix對socket做監控