linux系統性能監視命令,經過百度谷歌,加上各渠道獲得,查找到相關命令匯集,望能學有所收獲 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?--by 王子
匯集命令如下:
內存:top、 free、 vmstat、 mpstat、iostat、 sar
CPU:top、 vmstat、 mpstat、 iostat、 sar
I/O:vmstat、 mpstat、 iostat、 sar
進程:ipcs、 ipcrm、 lsof、 strace、 lstrace
負載:uptime、 mount、 umount、 df、 du、 fsck、 dd、 dumpe2fs、 dump
top
顯示管理執行中的程序。
命令格式:top ?[-] [d] [p] [q] [c] [C] [S][n]
常用參數(詳細內容可以參考MAN 幫助文檔。這里列舉部分內容)
b 使用批處理模式。# top b
c 列出程序時,顯示每個程序的完整指令,包括指令名稱,路徑和參數等相關信息。# top c
d<間隔秒數> 設置top監控程序執行狀況的間隔時間,單位以秒計算。# top d
i 執行top指令時,忽略閑置或是已成為Zombie的程序。# top i
n<執行次數> 設置監控信息的更新次數。# top n
q 持續監控程序執行的狀況。# top q
s 使用保密模式,消除互動模式下的潛在危機。# top s
S 使用累計模式,其效果類似ps指令的"-S"參數。# top S/-S
備注:
一.TOP前五行統計信息:
1、統計信息區前五行是系統整體的統計信息。
2、第二、三行為進程和CPU的信息
3、第四五行為內存信息。
二.列表進程信息
詳細內容請查閱:http://www.jb51.net/LINUXjishu/34604.html
free
顯示內存狀態。
命令格式:free [-bkmotV][-s <間隔秒數>]
常用參數
-b 以Byte為單位顯示內存使用情況。
-k 以KB為單位顯示內存使用情況。
-m 以MB為單位顯示內存使用情況。
-o 不顯示緩沖區調節列。
-s<間隔秒數> 持續觀察內存使用狀況。
-t 顯示內存總和列。
-V 顯示版本信息。
備注:
# free
# free -mMem:表示物理內存統計
-/+ buffers/cached:表示物理內存的緩存統計
Swap:表示硬盤上交換分區的使用情況,
詳細內容請查閱:
http://www.jb51.net/LINUXjishu/57932.html
vmstat
顯示虛擬內存使用情況
命令格式:
vmstat ?[-a] [-n] [-S unit] [delay [ count]]
vmstat [-s] [-n] [-S unit]
vmstat [-m] [-n] [delay [ count]]
vmstat [-d] [-n] [delay [ count]]
vmstat [-p disk partition] [-n]
[delay [ count]]
vmstat [-f]
vmstat [-V]
常用參數
-a:顯示活躍和非活躍內存
-f:顯示從系統啟動至今的fork數量 。
-m:顯示slabinfo
-n:只在開始時顯示一次各字段名稱。
-s:顯示內存相關統計信息及多種系統活動數量。
delay:刷新時間間隔。如果不指定,只顯示一條結果。
count:刷新次數。如果不指定刷新次數,但指定了刷新時間間隔,這時刷新次數為無窮。
-d:顯示磁盤相關統計信息。
-p:顯示指定磁盤分區統計信息
-S:使用指定單位顯示。參數有 k 、K 、m 、M ,分別代表1000、1024、1000000、1048576字節(byte)。默認單位為K(1024 bytes)
-V:顯示vmstat版本信息。
# ?vmstat 5 6
(命令:vmstat 5 6
表示在5秒時間內進行6次采樣。將得到一個數據匯總他能夠反映真正的系統情況。)vmstat命令輸出信息詳細說明:
字段說明:
Procs(進程):
r: 運行隊列中進程數量
b: 等待IO的進程數量
Memory(內存):
swpd: 使用虛擬內存大小
free: 可用內存大小
buff: 用作緩沖的內存大小
cache: 用作緩存的內存大小
Swap:
si: 每秒從交換區寫到內存的大小
so: 每秒寫入交換區的內存大小
IO:(現在的Linux版本塊的大小為1024bytes)
bi: 每秒讀取的塊數
bo: 每秒寫入的塊數
系統:
in: 每秒中斷數,包括時鐘中斷。
cs: 每秒上下文切換數。
CPU(以百分比表示):
us: 用戶進程執行時間(user time)
sy: 系統進程執行時間(system time)
id: 空閑時間(包括IO等待時間),中央處理器的空閑時間 ?。以百分比表示。
wa: 等待IO時間
備注: 如果 r經常大于 4 ,且id經常少于40,表示cpu的負荷很重。如果pi,po 長期不等于0,表示內存不足。如果disk 經常不等于0, 且在 b中的隊列 大于3, 表示 io性能不好。Linux在具有高穩定性、可靠性的同時,具有很好的可伸縮性和擴展性,能夠針對不同的應用和硬件環境調整,優化出滿足當前應用需要的最佳性能。因此企業在維護Linux系統、進行系統調優時,了解系統性能分析工具是至關重要的。
詳細查閱:
http://www.jb51.net/LINUXjishu/152024.html
mpstat
實時系統監控工具。
命令格式:mpstat [-P {|ALL}] [internal [count]]
常用參數
(當沒有參數時,mpstat則顯示系統啟動以后所有信息的平均值。有interval時,第一行的信息自系統啟動以來的平均信息。從第二行開始,輸出為前一個interval時間段的平均信息。)
-P ?{|ALL} 表示監控哪個CPU, cpu在[0,cpu個數-1]中取值
internal 相鄰的兩次采樣的間隔時間、
count 采樣的次數,count只能和delay一起使用
備注:
mpstat -P ALL 2屬性說明:
%user在internal時間段里,用戶態的CPU時間(%),不包含nice值為負進程(usr/total)*100
%nice在internal時間段里,nice值為負進程的CPU時間(%)(nice/total)*100
%sys在internal時間段里,內核時間(%)(system/total)*100
%iowait在internal時間段里,硬盤IO等待時間(%) ?(iowait/total)*100
%irq在internal時間段里,硬中斷時間(%)(irq/total)*100
%soft在internal時間段里,軟中斷時間(%)(softirq/total)*100
%idle在internal時間段里,CPU除去等待磁盤IO操作外的因為任何原因而空閑的時間閑置時間(%) (idle/total)*100
計算公式: ?
total_cur=user+system+nice+idle+iowait+irq+softirq
total_pre=pre_user+ pre_system+ pre_nice+ pre_idle+ pre_iowait+ pre_irq+ pre_softirq
user=user_cur – user_pre
total=total_cur-total_pre
其中_cur 表示當前值,_pre表示interval時間前的值。上表中的所有值可取到兩位小數點。
詳細查閱:http://www.cnblogs.com/stephen-liu74/archive/2011/12/05/2257887.html
iostat
(輸入/輸出統計)對系統的磁盤操作活動進行監視。
命令格式:iostat[參數][時間][次數]
常用參數
-C 顯示CPU使用情況cpu
-d 顯示磁盤使用情況
-k 以 KB 為單位顯示
-m 以 M 為單位顯示
-N 顯示磁盤陣列(LVM) 信息
-n 顯示NFS 使用情況
-p[磁盤] 顯示磁盤和分區的情況
-t 顯示終端和CPU的信息
-x 顯示詳細信息
-V 顯示版本信息
disk屬性:
屬性值說明:
rrqm/s: ?每秒進行 merge 的讀操作數目。即 rmerge/s
wrqm/s: ?每秒進行 merge 的寫操作數目。即 wmerge/s
r/s: ?每秒完成的讀 I/O 設備次數。即 rio/s
w/s: ?每秒完成的寫 I/O 設備次數。即 wio/s
rsec/s: ?每秒讀扇區數。即 rsect/s
wsec/s: ?每秒寫扇區數。即 wsect/s
rkB/s: ?每秒讀K字節數。是 rsect/s 的一半,因為每扇區大小為512字節。
wkB/s: ?每秒寫K字節數。是 wsect/s 的一半。
avgrq-sz: ?平均每次設備I/O操作的數據大小 (扇區)。
avgqu-sz: ?平均I/O隊列長度。
await: ?平均每次設備I/O操作的等待時間 (毫秒)。
svctm: 平均每次設備I/O操作的服務時間 (毫秒)。
%util: ?一秒中有百分之多少的時間用于 I/O 操作,即被io消耗的cpu百分比
備注:如果 %util 接近 100%,說明產生的I/O請求太多,I/O系統已經滿負荷,該磁盤可能存在瓶頸。如果 svctm 比較接近 await,說明 I/O 幾乎沒有等待時間;如果 await 遠大于 svctm,說明I/O 隊列太長,io響應太慢,則需要進行必要優化。如果avgqu-sz比較大,也表示有當量io在等待。
示例:
iostat -d 2 2
[root@localhost ~]# iostat -d 2 2
Linux 3.10.0-327.el7.x86_64 (localhost.localdomain) ?02/13/2017 ?_x86_64_ ?(4 CPU)
Device: ? ? ? ?tps ? ?kB_read/s ? ?kB_wrtn/s ? ?kB_read ? ?kB_wrtn
sda ? ? ? ? ? 2.28 ? ? ? 105.65 ? ? ? ? 3.61 ? ?1043443 ? ? ?35692
Device: ? ? ? ?tps ? ?kB_read/s ? ?kB_wrtn/s ? ?kB_read ? ?kB_wrtn
sda ? ? ? ? ? 0.50 ? ? ? ? 4.00 ? ? ? ? 0.00 ? ? ? ? ?8 ? ? ? ? ?0
iostat -d -k 1 1
[root@localhost ~]# iostat -d -k 1 1
Linux 3.10.0-327.el7.x86_64 (localhost.localdomain) ?02/13/2017 ?_x86_64_ ?(4 CPU)
Device: ? ? ? ?tps ? ?kB_read/s ? ?kB_wrtn/s ? ?kB_read ? ?kB_wrtn
sda ? ? ? ? ? 2.08 ? ? ? ?95.97 ? ? ? ? 3.30 ? ?1043619 ? ? ?35939
屬性值說明:
%user 顯示了在用戶級(應用程序)執行時產生的 CPU 使用率百分比。
%system 顯示了在系統級(內核)執行時產生的 CPU 使用率百分比。
%idle 顯示了在 CPU 空閑并且系統沒有未完成的磁盤 I/O 請求時的時間百分比。
%iowait 顯示了 CPU 空閑期間系統有未完成的磁盤 I/O 請求時的時間百分比。
%nicenice 操作(改變進程優先序列操作)操作使用的CPU百分比
%steal 管理程序維護另一個虛擬處理器時候,虛擬CPU的無意識等待時間百分比
sar
對系統的活動進行報告命令。
包括:文件的讀寫情況、系統調用的使用情況、磁盤I/O、CPU效率、內存使用狀況、進程活動及IPC有關的活動等。
命令格式:sar [options] [-A] [-o file] t [n](t為采樣間隔,n為采樣次數,默認值是1;)
常用參數
-A:所有報告的總和
-P:設定CPU
-u:輸出CPU使用情況的統計信息
-v:輸出inode、文件和其他內核表的統計信息
-d:輸出每一個塊設備的活動信息
-n:匯報網絡情況
-q:匯報隊列長度和負載信息
-r:輸出內存和交換空間的統計信息
-b:顯示I/O和傳送速率的統計信息
-a:文件讀寫情況
-c:輸出進程統計信息,每秒創建的進程數
-R:輸出內存頁面的統計信息
-y:終端設備活動情況
-w:輸出系統交換活動信息
示例:
1、例如,每10秒采樣一次,連續采樣3次,觀察CPU的使用情況,并將采樣結果以二進制形式存入當前目錄下的文件sys_info中,需鍵入如下命令:
# sar -u -o sys_info 10 3
2、# sar -f sys_info(用-f設定要讀取的信息存儲文件)
3、# sar -P ALL 1 1(-P查看cpu)
4、例如,每10秒采樣一次,連續采樣3次,觀察核心表的狀態,需鍵入如下命令:
# sar -v 10 3輸出項說明:
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等待分配內存,此時應加大內存容量
(3).若%idle的值持續低于1,則系統的CPU處理能力相對較低,表明系統中最需要解決的資源是CPU。
詳細查閱:http://www.jb51.net/LINUXjishu/396293.html
ipcs(與ipcrm相關聯)
報告進程間通信設施狀態。
命令格式:ipcs [-mqs] [-abcopt] [-C core] [-N namelist]
參數用法
ipcs -a ?是默認的輸出信息 打印出當前系統中所有的進程間通信方式的信息
ipcs -m ?打印出使用共享內存進行進程間通信的信息
ipcs -q ? 打印出使用消息隊列進行進程間通信的信息
ipcs -s ?打印出使用信號進行進程間通信的信息
ipcs -t ? 輸出信息的詳細變化時間
ipcs -p ?輸出ipc方式的進程ID
ipcs -c ?輸出ipc方式的創建者/擁有者
ipcs -u ?輸出當前系統下ipc各種方式的狀態信息(共享內存,消息隊列,信號)
示例:
1、ipcs -ql
2、ipcrm -刪除ipc(清除共享內存信息)引用它的語法:
ipcrm -m|-q|-s shm_id-ql(查看消息隊列的限制信息)
說明:
-qt(顯示消息隊列的創建時間,發送和接收最后一條消息的時間)
-qp(顯示往消息隊列中放消息和從消息隊列中取消息的進程ID)
-q ?-i msgid:顯示該消息隊列結構體中的消息信息
詳細查閱:http://www.jb51.net/article/40805.htm
ipcrm
移除一個消息對象。或者共享內存段,或者一個信號集,同時會將與ipc對象相關鏈的數據也一起移除。當然,只有超級管理員,或者ipc對象的創建者才有這項權利。
參數用法
ipcrm ?-M shmkey移除用shmkey創建的共享內存段
ipcrm -m shmid ? ?移除用shmid標識的共享內存段
ipcrm -Q msgkey ?移除用msqkey創建的消息隊列
ipcrm -q msqid ?移除用msqid標識的消息隊列
ipcrm -S semkey ?移除用semkey創建的信號
ipcrm -s semid ?移除用semid標識的信號
lsof
以列表的形式顯示打開的文件和進程。在linux環境下,任何事物都以文件的形式存在,通過文件不僅僅可以訪問常規數據,還可以訪問網絡連接和硬件。
命令格式:lsof[options]filename
常用參數
lsof filename 顯示打開指定文件的所有進程
lsof -a 表示兩個參數都必須滿足時才顯示結果
lsof -c string
顯示COMMAND列中包含指定字符的進程所有打開的文件
lsof -u username 顯示所屬user進程打開的文件
lsof -g gid 顯示歸屬gid的進程情況
lsof +d /DIR/ 顯示目錄下被進程打開的文件
lsof +D /DIR/ 同上,但是會搜索目錄下的所有目錄,時間相對較長
lsof -d FD 顯示指定文件描述符的進程
lsof -n 不將IP轉換為hostname,缺省是不加上-n參數
lsof -i 用以顯示符合條件的進程情況
lsof -i[46]
[protocol][@hostname|hostaddr][:service|port]
46 --> IPv4 or IPv6
protocol --> TCP or UDP
hostname --> Internet host name
hostaddr --> IPv4地址
service --> /etc/service中的 service name
(可以不只一個)
port --> 端口號 (可以不只一個)
屬性名稱:
COMMAND:進程的名稱
PID:進程標識符
USER:進程所有者
FD:文件描述符,應用程序通過文件描述符識別該文件。如cwd、txt等
TYPE:文件類型,如DIR、REG等
DEVICE:指定磁盤的名稱
SIZE:文件的大小
NODE:索引節點(文件在磁盤上的標識)
NAME:打開文件的確切名稱
詳細查閱:http://www.jb51.net/LINUXjishu/83948.html
strace
跟蹤程式執行時的系統調用和所接收的信號
命令格式:strace ?[ -dffhiqrtttTvxx ] [ -acolumn ] [ -eexpr ] ...
[ -ofile ] [ -ppid ] ... [ -sstrsize ] [ -uusername ] [ command [ arg ... ] ?]
strace -c [ -eexpr ] ... [ -Ooverhead ] [ -Ssortby ] [ command [ arg ... ] ?]
參數詳細查閱:http://www.jb51.net/os/RedHat/1156.html
http://man.linuxde.net/strace
lstrace暫無相關信息
uptime
獲取主機運行時間和linux系統負載
直接輸入uptime
參數 ?-V獲取版本信息
相關:
ps-ef查看進程
-e : 在命令執行后顯示環境
-f : 完整顯示輸出
1) 進程用戶ID(UID)
2) 進程ID (PID)
3) 父進程ID (PPID)
4) CPU 調度情況 (C)
5) 進程啟動的時間 (STIME)
6) 進程共占用CPU的時間(TIME)
7) 啟動進程的命令 (CMD)
cat /proc/uptime 查看系統啟動時間和空閑時間
第一個數值代表系統總的啟動時間,第二個數值則代表系統空閑的時間,都是用秒來表示的。如果系統里第二個數字比第一個數字還要大,則說明你的cpu是多核的,cpu0上閑了一秒, cpu1上閑了兩秒,加起就是三秒。
詳細查閱:http://www.jb51.net/article/40813.htm
df
顯示磁盤的相關信息(df可顯示磁盤的文件系統與使用情形。)
命令格式:df [-ahHiklmPT][--block-size=<區塊大小>][-t <文件系統類型>][-x
<文件系統類型>][--help][--no-sync][--sync][--version][文件或設備]
-a或--all ? 包含全部的文件系統。
--block-size=<區塊大小> ? 以指定的區塊大小來顯示區塊數目。
-h或--human-readable ? 以可讀性較高的方式來顯示信息。
-H或--si ? 與-h參數相同,但在計算時是以1000 Bytes為換算單位而非1024 Bytes。
-i或--inodes ? 顯示inode的信息。
-k或--kilobytes ? 指定區塊大小為1024字節。
-l或--local ?僅顯示本地端的文件系統。
-m或--megabytes ? 指定區塊大小為1048576字節。
--no-sync ? 在取得磁盤使用信息前,不要執行sync指令,此為預設值。
-P或--portability ? 使用POSIX的輸出格式。
--sync ? 在取得磁盤使用信息前,先執行sync指令。
-t<文件系統類型>或--type=<文件系統類型> ? 僅顯示指定文件系統類型的磁盤信息。
-T或--print-type ?顯示文件系統的類型。
-x<文件系統類型>或--exclude-type=<文件系統類型>不要顯示指定文件系統類型的磁盤信息。
--help ? 顯示幫助。
--version ? 顯示版本信息。
[文件或設備] ? 指定磁盤設備。
示例:
$ ?df
$ df -ia (列出各文件系統的i節點使用情況)
列出文件系統的類型。
$ df -T
Filesystem Type 1K-blocks Used Available use% Mounted on
/dev/hda2 ext2 1361587 1246405 44824 97% /
(本例中的文件系統是ext2類型的)
# df -a
詳細查閱:http://www.jb51.net/LINUXjishu/64953.html
du
評估磁盤的使用情況
命令格式:du [OPTION]… [FILE]…
詳細查閱:http://www.jb51.net/LINUXjishu/34649.html
mount
掛接
命令格式:mount [-t vfstype] [-o options] device dir
詳細查閱:http://www.jb51.net/article/40808.htm
umount
卸除文件系統。
命令格式:umount [-ahnrvV][-t <文件系統類型>][文件系統]
參數
-a ? 卸除/etc/mtab中記錄的所有文件系統。
-h ? 顯示幫助。
-n ? 卸除時不要將信息存入/etc/mtab文件中。
-r ? 若無法成功卸除,則嘗試以只讀的方式重新掛入文件系統。
-t<文件系統類型> ? 僅卸除選項中所指定的文件系統。
-v ? 執行時顯示詳細的信息。
-V ? 顯示版本信息。
[文件系統] ? 除了直接指定文件系統外,也可以用設備名稱或掛入點來表示文件系統。
詳細查閱:http://www.jb51.net/linux/umount.htm
fsck
命令格式:fsck.minix [-aflmrsv][外圍設備代號]
命令格式:fsck.ext2 [-acdfFnprsStvVy][-b <分區第一個磁區地址>][-B <區塊大小>][-C <反敘述器>][-I][-l/L <損壞區塊文件>][-P <處理inode大小>][外圍設備代號]
詳細查閱:http://www.jb51.net/linux/fsck.htm
http://www.jb51.net/linux/fsck.ext2.htm
dd
用指定大小的塊拷貝一個文件,并在拷貝的同時進行指定的轉換。
命令格式:dd(選項) ? ? 來自: http://man.linuxde.net/dd
參數:
bs=<字節數>:將ibs(輸入)與歐巴桑(輸出)設成指定的字節數;
cbs=<字節數>:轉換時,每次只轉換指定的字節數;
conv=<關鍵字>:指定文件轉換的方式;
count=<區塊數>:僅讀取指定的區塊數;
ibs=<字節數>:每次讀取的字節數;
obs=<字節數>:每次輸出的字節數;
of=<文件>:輸出到文件;
seek=<區塊數>:一開始輸出時,跳過指定的區塊數;
skip=<區塊數>:一開始讀取時,跳過指定的區塊數;
--help:幫助;
--version:顯示版本信息。
示例:
[root@localhost text]# dd if=/dev/zero ?of=sun.txt bs=1M count=1 1+0 records in 1+0 records out 1048576 bytes (1.0 ?MB) copied, 0.006107 seconds, 172 MB/s [root@localhost text]# du -sh sun.txt ?1.1M sun.txt
該命令創建了一個1M大小的文件sun.txt,其中參數解釋: if ?代表輸入文件。如果不指定if,默認就會從stdin中讀取輸入。 of 代表輸出文件。如果不指定of,默認就會將stdout作為默認輸出。 bs ?代表字節為單位的塊大小。 count 代表被復制的塊數。 /dev/zero 是一個字符設備,會不斷返回0值字節(\0)。
詳細查閱:http://www.jb51.net/LINUXjishu/391419.html ? ?
http://man.linuxde.net/dd
dumpe2fs
顯示ext2/ext3/ext4文件系統信息。
命令格式:dumpe2fs [ -bfhixV ] [ -o superblock=superblock ] [ -o blocksize=blocksize ] device
詳細查閱:http://www.cnblogs.com/Andy-Lv/p/5299095.html
dump
命令格式:dump(選項)(參數)
備份ext2或者ext3文件系統。可將目錄或整個文件系統備份至指定的設備,或備份成一個大文件。http://man.linuxde.net/dump