Linux 系統監控常用命令
阿新 • • 發佈:2018-02-06
索引 zest rec inter 常用命令 節點 bash intern 虛擬
簡介
列舉操作系統級監控常用的幾個方法,建議收藏使用
CPU
top 命令可用於監控系統整體負載,包括cpu、內存使用等,能夠實時顯示系統中各個進程的資源占用狀況
輸出樣例
top - 19:37:41 up 192 days, 9:14, 1 user, load average: 0.39, 0.28, 0.27 Tasks: 126 total, 1 running, 125 sleeping, 0 stopped, 0 zombie Cpu(s): 0.1%us, 0.1%sy, 0.0%ni, 99.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 32113M total, 11351M used, 20762M free, 266M buffers Swap: 4091M total, 0M used, 4091M free, 304M cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 25280 1016 968 S 0 0.0 2:37.44 init 2 root 20 0 0 0 0 S 0 0.0 0:02.40 kthreadd 3 root 20 0 0 0 0 S 0 0.0 3:28.59 ksoftirqd/0 5 root 20 0 0 0 0 S 0 0.0 0:00.59 kworker/u:0 6 root RT 0 0 0 0 S 0 0.0 0:11.39 migration/0
指標說明
- load average: 0.06, 0.60, 0.48
系統負載,即任務隊列的長度。分別為 1分鐘、5分鐘、15分鐘內的平均值。 - Tasks
進程匯總,包括運行中、睡眠、停止、僵屍態的梳理 - Cpu(s)
指標 | 說明 |
---|---|
0.3% us | 用戶空間占用CPU百分比 |
1.0% sy | 內核空間占用CPU百分比 |
0.0% ni | 用戶進程優先級調度CPU百分比 |
98.7% id | 空閑CPU百分比 |
0.0% wa | 等待輸入輸出的CPU時間百分比 |
0.0% hi | 硬件CPU中斷占用百分比 |
0.0% si | 軟中斷占用百分比 |
0.0% st | 虛擬機占用百分比 |
Mem
內存統計,包括物理內存、已使用內存、空閑內存、內核緩存- Swap
交換區統計,包括總量、已使用、空閑量、緩存量 進程列表
指標 | 說明 |
---|---|
PID | 進程ID |
USER | 進程所有者的用戶名 |
PR | 優先級 |
NI | nice值。負值表示高優先級,正值表示低優先級 |
VIRT | 進程使用的虛擬內存總量,單位kb。VIRT=SWAP+RES |
RES | 進程使用的、未被換出的物理內存大小,單位kb。RES=CODE+DATA |
SHR | 共享內存大小,單位kb |
S | 進程狀態(D=不可中斷的睡眠狀態,R=運行,S=睡眠,T=跟蹤/停止,Z=僵屍進程) |
%CPU | 進程使用的CPU百分比 |
%MEM | 進程使用的物理內存百分比 |
TIME+ | 進程使用的CPU時間總計,單位1/100秒 |
SWAP | 進程使用的虛擬內存中,被換出的大小,單位kb |
CODE | 可執行代碼占用的物理內存大小,單位kb |
DATA | 可執行代碼以外的部分(數據段+棧)占用的物理內存大小,單位kb |
COMMAND | 命令名/命令行 |
按F鍵可以選擇顯示不同的指標,非常詳細
參考文檔
內存監控
vmstat 指虛擬內存統計(Virtual Meomory Statistics), 是常用的實時系統監控工具。
輸出樣例
~-> vmstat 2
procs -----------memory---------- ---swap-- -----io---- -system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 212 21250404 272916 320572 0 0 0 2 0 0 0 0 100 0 0
0 0 212 21250652 272916 320576 0 0 0 0 535 1061 0 0 100 0 0
0 0 212 21250652 272916 320576 0 0 0 0 496 1062 0 0 100 0 0
2 0 212 21250256 272916 320576 0 0 0 0 751 1107 0 0 99 0 0
0 0 212 21250404 272916 320568 0 0 0 0 496 1056 0 0 100 0 0
0 0 212 21250404 272916 320568 0 0 0 0 593 1089 0 0 100 0 0
0 0 212 21250404 272916 320568 0 0 0 56 539 1074 0 0 100 0 0
0 0 212 21250404 272916 320568 0 0 0 0 589 1137 0 0 100 0 0
0 0 212 21250404 272916 320564 0 0 0 0 608 1154 0 0 100 0 0
0 0 212 21250404 272916 320564 0 0 0 0 601 1156 0 0 100 0 0
1 0 212 21250404 272916 320564 0 0 0 0 611 1155 0 0 100 0 0
0 0 212 21250404 272916 320564 0 0 0 0 599 1151 0 0 100 0 0
指標說明
指標 | 說明 |
---|---|
procs.r | 等待cpu時間片的進程數 |
procs.b | 等待資源的進程數,比如等待IO或內存交換等 |
cpu.us | 用戶態CPU 時間百分比 |
cpu.sy | 內核態CPU 時間百分比,參考值us+sy<=80% |
cpu.wa | IO等待所占用的CPU 時間百分比,參考值wa<=30 |
cpu.id | 空閑狀態CPU 時間百分比 |
cpu.st | 虛擬機CPU占用時間百分比,存在超分時可能較高 |
system.in | 設備中斷數 |
system.cs | 上下文切換次數 |
memory.swpd | 內存交換區的內存數量(KB) |
memory.free | 空閑頁的內存數量(KB) |
memory.buff | buffer cache的內存數量,一般在塊設備讀寫使用 |
memory.cache | 作為page cache的內存數量,一般作為文件系統的cache |
swap.si | 由內存進入內存交換區數量 |
swap.so | 由內存交換區進入內存數量 |
io.bi | 從塊設備讀入的數據量(KB/S) |
io.bo | 向塊設備寫入的數據量(KB/S) |
參考文檔
關於 linux OOM Killer
free 查看可用內存
網絡連接
netstat 命令用於顯示各種網絡相關信息,如網絡連接,路由表,接口狀態等。
輸出樣例
iotweb@kwe1000111753:~> netstat -ano |head
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:4444 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:19999 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:6380 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
常見用法
- 檢查出TIME_WAIT的數量
netstat -an | grep -c TIME_WAIT
- 檢查全部socket狀態
netstat -nat| awk '{print awk $NF}'|sort|uniq -c|sort -n
- 檢查進程及socket數量
netstat -nap| awk '{print awk $NF}'|sort|uniq -c|sort -n
- 查看端口連接數
netstat -anp |grep 27071|wc -l
磁盤使用
iostat 用於監控磁盤的IO吞吐及資源占用情況
命令
iostat -d -x -k 1 10
-d為查看磁盤狀況,-k表示以KB為單位,-x表示輸出更多的擴展字段
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
xvda 0.01 8.32 0.49 4.94 6.82 53.08 22.06 0.11 19.68 1.76 0.95
xvde 0.02 841.11 33.24 304.80 331.20 4583.79 29.08 1.67 4.93 1.15 38.76
dm-0 0.00 0.00 33.26 1145.95 331.20 4583.79 8.34 0.30 2.61 0.33 38.81
指標說明
指標 | 說明 |
---|---|
rrqm/s | 每秒merge的讀取請求數(同一個Block存在merge機制) |
rrqm/s | 每秒merge的寫入請求數(同一個Block存在merge機制) |
r/s | 每秒提交的讀取請求數 |
w/s | 每秒提交的寫入請求數 |
await | IO請求的平均響應時間,參考值<=10ms |
rkB/s | 每秒讀取數據量 |
wkb/s | 每秒寫入數據量 |
avgrq-sz | IO平均請求大小(扇區) |
avgqu-sz | IO平均請求隊列大小 |
svctm | IO請求平均執行時間 |
%util | CPU占用百分比 |
進程監控
ps命令能夠給出當前系統中進程的快照
- 查找進程方法
ps -ef |grep nscl
- 按cpu占用排序查看前10進程
-> ps -aux --sort -pcpu |head -n 10
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
iotweb 9313 1.0 14.3 6277488 4708752 ? Sl Nov03 687:08 ./bin/mongod -f conf/mongodb.conf --auth
iotweb 16957 0.3 10.1 10208428 3322260 ? Sl Nov01 251:37 java -jar redis-stat-0.4.14.jar 127.0.0.1:6380 3 --server=63800
root 2822 0.1 0.0 133196 1288 ? Sl Jun07 431:05 /usr/bin/vm-agent
iotweb 16942 0.1 0.0 52364 13304 ? Ssl Nov01 95:57 ./bin/redis-server 0.0.0.0:6380
指標說明
指標 | 說明 |
---|---|
USER | 進程 owner |
PID | 進程ID |
%CPU | CPU占用率 |
%MEM | 內存占用率 |
TTY | 終端 |
STAT | 進程狀態 |
VSZ | 虛擬內存占用 |
RSS | 物理內存占用 |
START | 開始日期 |
TIME | 啟動時長 |
COMMAND | Bash命令 |
參考文檔
文件占用
lsof(list open files)用於列出當前系統打開文件句柄,包括網絡套接字、設備句柄等。
輸出樣例
~->lsof /opt
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mongod 9313 iotweb txt REG 252,0 36409888 761870 /opt/local/mongodb/bin/mongod
mongod 9313 iotweb 4w REG 252,0 7082638 778244 /opt/local/mongodb/log/mongodb.log
mongod 9313 iotweb 8uW REG 252,0 5 778246 /opt/local/mongodb/data/mongod.lock
mongod 9313 iotweb 9uw REG 252,0 21 778247 /opt/local/mongodb/data/WiredTiger.lock
mongod 9313 iotweb 15u REG 252,0 36864 778253 /opt/local/mongodb/data/sizeStorer.wt
指標說明
指標 | 說明 |
---|---|
COMMAND | 進程的名稱 |
PID | 進程ID |
USER | 進程所有者 |
FD | 文件描述符 |
TYPE | 文件類型,如DIR、REG等 |
DEVICE | 指定磁盤的名稱 |
SIZE | 文件的大小 |
NODE | 文件索引節點 |
NAME | 文件的名稱 |
參考文檔
Linux 系統監控常用命令