1. 程式人生 > >Linux 系統監控常用命令

Linux 系統監控常用命令

索引 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 系統監控常用命令