Linux中常用的監(jiān)控命令
在以前使用windows系統(tǒng)的時候牧嫉,常常會遇到系統(tǒng)變卡,然后我們就會使用快捷鍵 ctrl
+shift
+ESC
來調(diào)出windows的任務(wù)管理器减途,我們可以看到當前運行的進程酣藻,進程所占的CPU
資源,內(nèi)存資源等鳍置,還可以直接強制結(jié)束掉進程辽剧。
我們在使用linux的時候也同樣會出現(xiàn)這樣的問題,如果你遇到了税产,那么你就要學會這些linux查看系統(tǒng)資源的命令怕轿。
[toc]
下面我分為這么幾個角度分別說下這些命令的使用:
- 整機
- CPU
- 內(nèi)存
- 硬盤
- 磁盤
- 網(wǎng)絡(luò)I/O
整機
top
命令
參數(shù)說明:
-
d
:指定每兩次屏幕信息刷新之間的時間間隔。當然用戶可以使用s交互命令來改變之辟拷。 -
p
:通過指定監(jiān)控進程ID來僅僅監(jiān)控某個進程的狀態(tài)撞羽。 -
q
:該選項將使top沒有任何延遲的進行刷新。如果調(diào)用程序有超級用戶權(quán)限衫冻,那么top將以盡可能高的優(yōu)先級運行诀紊。 -
S
:指定累計模式。 -
s
:使top命令在安全模式中運行隅俘。這將去除交互命令所帶來的潛在危險邻奠。 -
i
:使top不顯示任何閑置或者僵死進程笤喳。 -
c
:顯示整個命令行而不只是顯示命令名。
常用命令說明:
-
Ctrl+L
:擦除并且重寫屏幕 -
K
:終止一個進程碌宴。系統(tǒng)將提示用戶輸入需要終止的進程PID杀狡,以及需要發(fā)送給該進程什么樣的信號。一般的終止進程可以使用15信號唧喉;如果不能正常結(jié)束那就使用信號9強制結(jié)束該進程捣卤。默認值是信號15。在安全模式中此命令被屏蔽八孝。 -
i
:忽略閑置和僵死進程董朝。這是一個開關(guān)式命令。 -
q
:退出程序 -
r
:重新安排一個進程的優(yōu)先級別干跛。系統(tǒng)提示用戶輸入需要改變的進程PID以及需要設(shè)置的進程優(yōu)先級值子姜。輸入一個正值將使優(yōu)先級降低,反之則可以使該進程擁有更高的優(yōu)先權(quán)楼入。默認值是10哥捕。 -
S
:切換到累計模式。 -
s
:改變兩次刷新之間的延遲時間嘉熊。系統(tǒng)將提示用戶輸入新的時間遥赚,單位為s。如果有小數(shù)阐肤,就換算成m s凫佛。輸入0值則系統(tǒng)將不斷刷新,默認值是5 s孕惜。需要注意的是如果設(shè)置太小的時間愧薛,很可能會引起不斷刷新,從而根本來不及看清顯示的情況衫画,而且系統(tǒng)負載也會大大增加毫炉。 -
f
或者F
:從當前顯示中添加或者刪除項目。 -
o
或者O
:改變顯示項目的順序 -
l
:切換顯示平均負載和啟動時間信息削罩。 -
m
:切換顯示內(nèi)存信息瞄勾。 -
t
:切換顯示進程和CPU狀態(tài)信息。 -
c
:切換顯示命令名稱和完整命令行弥激。 -
M
:根據(jù)駐留內(nèi)存大小進行排序进陡。 -
P
:根據(jù)CPU使用百分比大小進行排序。 -
T
:根據(jù)時間/累計時間進行排序秆撮。 -
W
:將當前設(shè)置寫入~/.toprc文件中。
當我們輸入top
命令后我們可以看到:
其中有一行是白色的换况,白色中顯示的是字段名稱:
PID: 進程id號
PPID:父進程id號
UID:有效用戶id號
USER:有效用戶名
RUSER: 真實用戶名
TTY:終端設(shè)備
%CPU:計算資源
%MEN:內(nèi)存
%TIME+:CPU時間
VIRT:virtual memory usage 虛擬內(nèi)存
- 進程“需要的”虛擬內(nèi)存大小职辨,包括進程使用的庫盗蟆、代碼、數(shù)據(jù)等
- 假如進程申請100m的內(nèi)存舒裤,但實際只使用了10m喳资,那么它會增長100m,而不是實際的使用量
RES:resident memory usage 常駐內(nèi)存
- 進程當前使用的內(nèi)存大小腾供,但不包括swap out
- 包含其他進程的共享
- 如果申請100m的內(nèi)存仆邓,實際使用10m,它只增長10m伴鳖,與VIRT相反
- 關(guān)于庫占用內(nèi)存的情況节值,它只統(tǒng)計加載的庫文件所占內(nèi)存大小
SHR:shared memory 共享內(nèi)存
- 除了自身進程的共享內(nèi)存,也包括其他進程的共享內(nèi)存
- 雖然進程只使用了幾個共享庫的函數(shù)榜聂,但它包含了整個共享庫的大小
- 計算某個進程所占的物理內(nèi)存大小公式:RES – SHR
- swap out后搞疗,它將會降下來
uptime
命令
簡化版top命令
從上面的參數(shù),top命令顯示的內(nèi)容须肆,我們就可以看到很多的參數(shù)匿乃,也是特別詳細的,但是我們可能有時候就只是想了解一些簡單的信息豌汇,這時候我們就可以使用uptime
這個命令了幢炸。
root@VM-0-4-ubuntu:~# uptime
15:17:22 up 171 days, 16:56, 1 user, load average: 0.00, 0.02, 0.02
- 系統(tǒng)當前時間 15:17:22
- 171 days, 16:56 從上次啟動開始系統(tǒng)運行的時間
- 1 user 注意這里實際是連接數(shù)量,可以自己測試出來拒贱,同一用戶多個連接的時候算多個
- load average: 0.00, 0.02, 0.02 這是重頭戲宛徊,分別描述了1分鐘5分鐘15分鐘內(nèi)系統(tǒng)平均負載
參數(shù)
- -p, --pretty show uptime in pretty format//以比較友好的格式輸出
- -h, --help display this help text//顯示幫助選項
- -s, --since system up since, in yyyy-mm-dd HH:MM:SS format//系統(tǒng)啟動時間
- -V, --version display version information and exit//版本信息
CPU
vmstat
命令
vmstat
命令可以查看很多信息,包括服務(wù)器的CPU使用率柜思,內(nèi)存使用岩调,虛擬內(nèi)存交換情況,IO讀寫情況。但是我們一般使用vmstat
命令一般常用來查看cpu的情況赡盘。
參數(shù)
-a
:顯示活躍和非活躍內(nèi)存-f
:顯示從系統(tǒng)啟動至今的fork數(shù)量 号枕。-m
:顯示slabinfo-n
:只在開始時顯示一次各字段名稱。-s
:顯示內(nèi)存相關(guān)統(tǒng)計信息及多種系統(tǒng)活動數(shù)量陨享。delay
:刷新時間間隔葱淳。如果不指定,只顯示一條結(jié)果抛姑。count
:刷新次數(shù)赞厕。如果不指定刷新次數(shù),但指定了刷新時間間隔定硝,這時刷新次數(shù)為無窮皿桑。-d
:顯示磁盤相關(guān)統(tǒng)計信息。-p
:顯示指定磁盤分區(qū)統(tǒng)計信息-S
:使用指定單位顯示。參數(shù)有 k 诲侮、K 镀虐、m 、M 沟绪,分別代表1000刮便、1024、1000000绽慈、1048576字節(jié)(byte)恨旱。默認單位為K(1024 bytes)-V
:顯示vmstat版本信息。
-
procs
(進程)-
r
:當前運行隊列中線程的數(shù)目坝疼,代表線程處于可運行狀態(tài)搜贤,但CPU還未能執(zhí)行.,這個值可以作為判斷CPU是否繁忙的一個指標裙士;當這個值超過了CPU數(shù)目入客,就會出現(xiàn)CPU瓶頸了;這個我們可以結(jié)合top
命令的負載值同步評估系統(tǒng)性能腿椎; -
b
:等待IO的進程數(shù)量桌硫;如果該值一直都很大,說明IO比較繁忙啃炸,處理較慢铆隘;
-
-
memory
(內(nèi)存)-
swpd
:虛擬內(nèi)存已使用的大小南用;如果swpd的值不為0膀钠,但是si,so的值長期為0裹虫,這種情況不會影響系統(tǒng)性能肿嘲; -
free
:空閑的物理內(nèi)存的大小筑公; -
buff
:用作緩沖的內(nèi)存大婿摺; -
cache
:用作緩存的內(nèi)存大邢宦拧封救;如果cache的值大的時候,說明cache處的文件數(shù)多捣作,如果頻繁訪問到的文件都能被cache處誉结,那么磁盤的讀IO bi會非常小券躁;
-
-
swap
(交換空間惩坑,單位:KB)掉盅;內(nèi)存夠用的時候,這2個值都是0以舒,如果這2個值長期大于0時怔接,系統(tǒng)性能會受到影響,磁盤IO和CPU資源都會被消耗稀轨。有時我們看到空閑內(nèi)存(free)很少的或接近于0時,就認為內(nèi)存不夠用了岸军,不能光看這一點奋刽,還要結(jié)合si和so,如果free很少艰赞,但是si和so也很少(大多時候是0)佣谐,那么不用擔心,系統(tǒng)性能這時不會受到影響的方妖;-
si
:每秒從交換區(qū)寫到內(nèi)存的大邢粱辍; -
so
:每秒寫入交換區(qū)的內(nèi)存大械趁佟雌澄;
-
-
io
(單位:塊/秒)-
bi
:每秒讀取的塊數(shù); -
bo
:每秒寫入的塊數(shù)杯瞻;隨機磁盤讀寫的時候镐牺,這2個值越大,能看到CPU在IO等待的值也會越大魁莉;
-
-
system
(系統(tǒng))睬涧;這2個值越大,會看到由內(nèi)核消耗的CPU時間會越大旗唁;-
in
:每秒中斷數(shù)畦浓,包括時鐘中斷; -
cs
:每秒上下文切換數(shù)检疫;
-
-
cpu
(以百分比表示)-
us
:用戶進程執(zhí)行時間(user time)讶请; -
sy
:系統(tǒng)進程執(zhí)行時間(system time);如果us
+sy
大于80%系統(tǒng)負擔就比較大了电谣。 -
id
:空閑時間(包括IO等待時間)秽梅; -
wa
:等待IO時間;wa的值高時剿牺,說明IO等待比較嚴重企垦,這可能由于磁盤大量作隨機訪問造成,也有可能磁盤出現(xiàn)瓶頸晒来。
-
mpstat
命令
查看所有cpu核的信息
常用 mpstat -P ALL 2
每兩秒采樣一次所有cpu的信息
參數(shù)
mpstat [-P {|ALL}] [internal [count]]
-
-P {|ALL}
表示監(jiān)控哪個CPU钞诡, cpu在[0,cpu個數(shù)-1]中取值 -
internal
相鄰的兩次采樣的間隔時間、 -
count
采樣的次數(shù),count只能和delay一起使用
當沒有參數(shù)時荧降,mpstat則顯示系統(tǒng)啟動以后所有信息的平均值接箫。有interval時,第一行的信息自系統(tǒng)啟動以來的平均信息朵诫。從第二行開始辛友,輸出為前一個interval時間段的平均信息。
字段說明:
-
%usr
:表示用戶進程所使用CPU的百分比 -
%nice
:表示使用nice命令對進程進行降級時CPU的百分比 %sys:表示內(nèi)核進程使用CPU的百分比 -
%iowait
:表示等待進行 I/O 所使用 CPU 的時間百分比 -
%irq
:表示用于處理系統(tǒng)中斷的 CPU 百分比 -
%soft
:表示用于軟件中斷的 CPU 百分比 -
%steal
: 顯示虛擬機管理器在服務(wù)另一個虛擬處理器時虛擬CPU處在非自愿等待下花費時間的百分比 -
%guest
: 顯示運行虛擬處理器時CPU花費時間的百分比 -
%idle
:顯示 CPU 的空閑時間
pidstat
命令
主要用于監(jiān)控全部或指定進程占用系統(tǒng)資源的情況剪返。但是我們一般都是用這個命令查看具體的某一個進程的詳細情況废累。
-
-u
:默認的參數(shù),顯示各個進程的cpu使用統(tǒng)計 -
-r
:顯示各個進程的內(nèi)存使用統(tǒng)計 -
-d
:顯示各個進程的IO使用情況 -
-p
:指定進程號 -
-w
:顯示每個進程的上下文切換情況 -
-t
:顯示選擇任務(wù)的線程的統(tǒng)計信息外的額外信息 -
-T { TASK | CHILD | ALL }
這個選項指定了pidstat監(jiān)控的脱盲。TASK表示報告獨立的task邑滨,CHILD關(guān)鍵字表示報告進程下所有線程統(tǒng)計信息。ALL表示報告獨立的task和task下面的所有線程钱反。
注意:task和子線程的全局的統(tǒng)計信息和pidstat選項無關(guān)掖看。這些統(tǒng)計信息不會對應(yīng)到當前的統(tǒng)計間隔,這些統(tǒng)計信息只有在子線程kill或者完成的時候才會被收集面哥。 -
-V
:版本號 -
-h
:在一行上顯示了所有活動哎壳,這樣其他程序可以容易解析。 -
-I
:在SMP環(huán)境尚卫,表示任務(wù)的CPU使用率/內(nèi)核數(shù)量 -
-l
:顯示命令名和所有參數(shù)
但是我們還是經(jīng)常這樣使用這個命令:
字段說明
-
PID
:進程ID -
%usr
:進程在用戶空間占用cpu的百分比 -
%system
:進程在內(nèi)核空間占用cpu的百分比 -
%guest
:進程在虛擬機占用cpu的百分比 -
%CPU
:進程占用cpu的百分比 -
CPU
:處理進程的cpu編號 -
Command
:當前進程對應(yīng)的命令
內(nèi)存
free
命令
這是我們用來查看系統(tǒng)內(nèi)存信息最常用的命令耳峦。
參數(shù)
-
-b
:以Byte為單位顯示內(nèi)存使用情況; -
-k
:以KB為單位顯示內(nèi)存使用情況焕毫; -
-m
:以MB為單位顯示內(nèi)存使用情況蹲坷; -
-g
:以GB為單位顯示內(nèi)存的使用情況; -
-o
:不顯示緩沖區(qū)調(diào)節(jié)列邑飒; -
-s
<間隔秒數(shù)>:持續(xù)觀察內(nèi)存使用狀況循签; -
-t
:顯示內(nèi)存總和列; -
-V
:顯示版本信息疙咸。
字段說明
- total 內(nèi)存總數(shù): 15.7G
- used 已經(jīng)使用的內(nèi)存數(shù): 15.6G
- free 空閑的內(nèi)存數(shù): 93M
- shared 當前已經(jīng)廢棄不用,總是0
- buffers Buffer 緩存內(nèi)存數(shù): 298M
- cached Page 緩存內(nèi)存數(shù):14G
pidstat
命令
前面我們講解了pidstat
命令,但是這里我們也用這個命令來查看內(nèi)存情況县匠。
pidstat -p 進程號 -r 采樣每隔秒數(shù)
字段說明
-
minflt/s
: 每秒次缺頁錯誤次數(shù)(minor page faults),次缺頁錯誤次數(shù)意即虛擬內(nèi)存地址映射成物理內(nèi)存地址產(chǎn)生的page fault次數(shù) -
majflt/s
: 每秒主缺頁錯誤次數(shù)(major page faults)撒轮,當虛擬內(nèi)存地址映射成物理內(nèi)存地址時乞旦,相應(yīng)的page在swap中,這樣的page fault為major page fault题山,一般在內(nèi)存使用緊張時產(chǎn)生 -
VSZ
: 該進程使用的虛擬內(nèi)存(以kB為單位) -
RSS
: 該進程使用的物理內(nèi)存(以kB為單位) -
%MEM
: 該進程使用內(nèi)存的百分比 -
Command
: 拉起進程對應(yīng)的命令
硬盤
df
命令
參數(shù)
-
-a
:--all兰粉,顯示所有的文件系統(tǒng),包括虛擬文件系統(tǒng)顶瞳,參考示例2玖姑。 -
-B
:--block-size愕秫,指定單位大小。比如1k焰络,1m等戴甩,參考示例3。 -
-h
:--human-readable闪彼,以人們易讀的GB甜孤、MB、KB等格式顯示畏腕,參考示例4课蔬。 -
-H
:--si,和-h參數(shù)一樣郊尝,但是不是以1024,而是1000战惊,即1k=1000流昏,而不是1k=1024。 -
-i
:--inodes吞获,不用硬盤容量况凉,而是以inode的數(shù)量來顯示,參考示例5各拷。 -
-k
:以KB的容量顯示各文件系統(tǒng)刁绒,相當于--block-size=1k。 -
-m
:以KB的容量顯示各文件系統(tǒng)烤黍,相當于--block-size=1m知市。 -
-l
:--local,只顯示本地文件系統(tǒng)速蕊。 -
--no-sync
:在統(tǒng)計使用信息之前不調(diào)用sync命令(默認)嫂丙。 -
-sync
:在統(tǒng)計使用信息之前調(diào)用sync命令。 -
-P
:--portability规哲,使用POSIX格式顯示跟啤,參考示例6。 -
-t
:--type=TYPE唉锌,只顯示指定類型的文件系統(tǒng)隅肥,參考示例7。 -
-T
:--print-type袄简,顯示文件系統(tǒng)類型腥放,參考示例8。 -
-x
:--exclude-type=TYPE绿语,不顯示指定類型的文件系統(tǒng)捉片。 -
--help
:顯示幫助信息平痰。 -
--version
:顯示版本信息。
雖然有這么多的參數(shù)伍纫,但是我們還是常用 df -h
直接查看所有的磁盤信息宗雇。
字段說明
-
Filesystem
:代表該文件系統(tǒng)時哪個分區(qū),所以列出的是設(shè)備名稱莹规。
1K-blocks:說明下面的數(shù)字單位是1KB赔蒲,可利用-h或-m來改變單位大小,也可以用-B來設(shè)置良漱。 -
Used
:已經(jīng)使用的空間大小舞虱。 -
Available
:剩余的空間大小。 -
Use%
:磁盤使用率母市。如果使用率在90%以上時矾兜,就需要注意了,避免磁盤容量不足出現(xiàn)系統(tǒng)問題患久,尤其是對于文件內(nèi)容增加較快的情況(如/home椅寺、/var/spool/mail等)。 -
Mounted on
:磁盤掛載的目錄蒋失,即該磁盤掛載到了哪個目錄下面返帕。
磁盤I/O
iostat
命令
參數(shù)
-
-c
: 僅顯示CPU統(tǒng)計信息.與-d選項互斥. -
-d
: 僅顯示磁盤統(tǒng)計信息.與-c選項互斥. -
-k
: 以K為單位顯示每秒的磁盤請求數(shù),默認單位塊. -
-p
: device | ALL
與-x選項互斥,用于顯示塊設(shè)備及系統(tǒng)分區(qū)的統(tǒng)計信息.也可以在-p后指定一個設(shè)備名. -
-t
在輸出數(shù)據(jù)時,打印搜集數(shù)據(jù)的時間. -
-V
打印版本號和幫助信息. -
-x
輸出擴展信息.
字段說明
-
rrqm/s
: 將讀入請求合并后,每秒發(fā)送到設(shè)備的讀入請求數(shù). -
wrqm/s
: 將寫入請求合并后,每秒發(fā)送到設(shè)備的寫入請求數(shù). -
r/s
: 每秒發(fā)送到設(shè)備的讀入請求數(shù). -
w/s
: 每秒發(fā)送到設(shè)備的寫入請求數(shù). -
rsec/s
: 每秒從設(shè)備讀入的扇區(qū)數(shù). -
wsec/s
: 每秒向設(shè)備寫入的扇區(qū)數(shù). -
rkB/s
: 每秒從設(shè)備讀入的數(shù)據(jù)量,單位為K. -
wkB/s
: 每秒向設(shè)備寫入的數(shù)據(jù)量,單位為K. -
avgrq-sz
: 發(fā)送到設(shè)備的請求的平均大小,單位是扇區(qū). -
avgqu-sz
: 發(fā)送到設(shè)備的請求的平均隊列長度. -
await
: I/O請求平均執(zhí)行時間.包括發(fā)送請求和執(zhí)行的時間.單位是毫秒. -
svctm
: 發(fā)送到設(shè)備的I/O請求的平均執(zhí)行時間.單位是毫秒. -
%util
: 在I/O請求發(fā)送到設(shè)備期間,占用CPU時間的百分比.用于顯示設(shè)備的帶寬利用率. 當這個值接近100%時,表示設(shè)備帶寬已經(jīng)占滿.
pidstat
命令
pidstat -d 采樣間隔時間 -p 進程id
字段說明
-
PID
:進程id -
kB_rd/s
:每秒從磁盤讀取的KB -
kB_wr/s
:每秒寫入磁盤KB -
kB_ccwr/s
:任務(wù)取消的寫入磁盤的KB。當任務(wù)截斷臟的pagecache的時候會發(fā)生篙挽。 -
COMMAND
:task的命令名
網(wǎng)絡(luò)I/O
ifstat
命令
參數(shù)
-
-l
: 監(jiān)測環(huán)路網(wǎng)絡(luò)接口荆萤。缺省情況下ifstat監(jiān)測活動的所有非環(huán)路網(wǎng)絡(luò)接口 -
-a
: 監(jiān)測能檢測到的所有網(wǎng)絡(luò)接口的狀態(tài)信息。 -
-z
: 隱藏流量是無的接口铣卡,如接口啟動了但是未使用的链韭。 -
-i
: <interface> 指定要監(jiān)測的接口。 -
-s
: 通過SNMP查詢一個遠程主機煮落。 -
-h
: 顯示幫助信息 -
-n
: 關(guān)閉周期性顯示頭部信息梧油。 -
-t
: 在每一行的開頭加一個時間戳 -
-T
: 報告所有檢測接口的全部帶寬 -
-w
: 指定間隔時間(與官方的文檔說明并不同,不知道是不是寫文檔的人寫錯州邢,反正我測試后是間隔時間) -
-W
: 如果顯示內(nèi)容超出終端窗口的寬度儡陨,就換行 -
-S
: 在同一行更新顯示內(nèi)容 -
-b
: 用kbits/s顯示帶寬 -
-q
: 按鍵模式 -
-v
: 顯示版本信息 -
-d
: 指定一個驅(qū)動來收集狀態(tài)信息
每秒輸出一次網(wǎng)絡(luò)IO信息
其中的 eth0
為網(wǎng)卡。