天天看點

Linux常用指令常用監控指令freeuptimevmstatpidstat

常用監控指令

top

$top
    top - 09:14:56 up 264 days, 20:56,  1 user,  load average: 0.02, 0.04, 0.00
    Tasks:  87 total,   1 running,  86 sleeping,   0 stopped,   0 zombie
    Cpu(s):  0.0%us,  0.2%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.2%st
    Mem:    377672k total,   322332k used,    55340k free,    32592k buffers
    Swap:   397308k total,    67192k used,   330116k free,    71900k cached
    PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
    1 root      20   0  2856  656  388 S  0.0  0.2   0:49.40 init
    2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd
    3 root      20   0     0    0    0 S  0.0  0.0   7:15.20 ksoftirqd/0
    4 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0           
  • 第一行
    • 09:14:56 : 系統目前時間
    • 264 days, 20:56 : 系統開機到現在經過了多少時間
    • 1 users : 目前2使用者線上
    • load average: 0.02, 0.04, 0.00: 系統1分鐘、5分鐘、15分鐘的CPU負載資訊
  • 第二行
    • Tasks:任務;
    • 87 total:很好了解,就是目前有87個任務,也就是87個程序。
    • 1 running:1個程序正在運作
    • 86 sleeping:86個程序睡眠
    • 0 stopped:停止的程序數
    • 0 zombie:僵死的程序數
  • 第三行
    • Cpu(s):表示這一行顯示CPU總體資訊
    • 0.0%us:使用者态程序占用CPU時間百分比,不包含renice值為負的任務占用的CPU的時間。
    • 0.7%sy:核心占用CPU時間百分比
    • 0.0%ni:改變過優先級的程序占用CPU的百分比
    • 99.3%id:空閑CPU時間百分比
    • 0.0%wa:等待I/O的CPU時間百分比
    • 0.0%hi:CPU硬中斷時間百分比
    • 0.0%si:CPU軟中斷時間百分比
    • 注:這裡顯示資料是所有cpu的平均值,如果想看每一個cpu的處理情況,按1即可;折疊,再次按1;
  • 第四行
    • Men:記憶體的意思
    • 8175320kk total:實體記憶體總量
    • 8058868k used:使用的實體記憶體量
    • 116452k free:空閑的實體記憶體量
    • 283084k buffers:用作核心緩存的實體記憶體量
  • 第五行
    • Swap:交換空間
    • 6881272k total:交換區總量
    • 4010444k used:使用的交換區量
    • 2870828k free:空閑的交換區量
    • 4336992k cached:緩沖交換區總量
  • 程序資訊
    • 再下面就是程序資訊:
    • PID:程序的ID
    • USER:程序所有者
    • PR:程序的優先級别,越小越優先被執行
    • NInice:值
    • VIRT:程序占用的虛拟記憶體
    • RES:程序占用的實體記憶體
    • SHR:程序使用的共享記憶體
    • S:程序的狀态。S表示休眠,R表示正在運作,Z表示僵死狀态,N表示該程序優先值為負數
    • %CPU:程序占用CPU的使用率
    • %MEM:程序使用的實體記憶體和總記憶體的百分比
    • TIME+:該程序啟動後占用的總的CPU時間,即占用CPU使用時間的累加值。
    • COMMAND:程序啟動指令名稱
  • 使用頻率最高的是P、T、M,因為通常使用top,我們就想看看是哪些程序最耗cpu資源、占用的記憶體最多; 注:通過”shift + >”或”shift + <”可以向右或左改變排序列 如果隻需要檢視記憶體:可用free指令。隻檢視uptime資訊(第一行),可用uptime指令;
  • 在top基本視圖中,按鍵盤數字“1”,可監控每個邏輯CPU的狀況
  • top -Hp 檢視指定程序 可通過Threads判斷線程數
top -Hp 11757
top - 19:36:11 up 266 days,  2:43,  1 user,  load average: 0.31, 0.18, 0.13
Threads: 115 total,   0 running, 115 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.2 us,  0.2 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  8010424 total,   733756 free,  5278396 used,  1998272 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  2421932 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
11767 admin     20   0 8204136   4.7g  18876 S  0.3 62.0  32:55.74 java
11757 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:00.00 java
11762 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:32.20 java
11763 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:17.34 java
11764 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:17.36 java
11765 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:17.31 java
11766 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:17.39 java
11768 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:02.17 java
11770 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:02.90 java
11771 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:04.30 java
11772 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:06.85 java
11773 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:00.16 java
11774 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:18.34 java
11796 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   2:27.85 java
11797 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:00.62 java
11798 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:01.35 java
11799 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:00.00 java
11800 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:00.00 java
11801 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   1:32.81 java
11802 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   1:31.72 java
11803 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:22.92 java
11804 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:00.19 java
11805 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:01.67 java
11806 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:01.16 java
11807 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:00.00 java
11808 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   3:57.39 java
11824 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:00.24 java
11855 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:03.40 java
11856 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:01.75 java
11858 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:03.75 java
11868 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:11.62 java
11882 admin     20   0 8204136   4.7g  18876 S  0.0 62.0   0:00.00 java           

free

  • 查詢可用記憶體
  • 區分buffer 和 cache
A buffer is something that has yet to be "written" to disk.
A cache is something that has been "read" from the disk and stored for later use.           

uptime

uptime
 17:38:53 up 265 days, 46 min,  1 user,  load average: 0.17, 0.09, 0.12           
  • 系統時間 運作時間 連接配接數(每個終端算一個連接配接) 1,5,15 分鐘的系統平均負載(運作隊列中的平均程序數)

load average

  • 3個數字的含義:分别表示系統在過去1分鐘、5分鐘、15分鐘内運作程序隊列中的平均程序數量。運作隊列,沒有等待IO,沒有WAIT,沒有KILL的程序通通都進這個隊列。
  • 用交通流量來做類比
    • 1、單核CPU - 單車道 - 數字在0.00-1.00之間正常
      • 0.00-1.00 之間的數字表示此時路況非常良好,沒有擁堵,車輛可以毫無阻礙地通過。
      • 1.00 表示道路還算正常,但有可能會惡化并造成擁堵。此時系統已經沒有多餘的資源了,管理者需要進行優化。
      • 1.00-* 表示路況不太好了,如果到達2.00表示有橋上車輛一倍數目的車輛正在等待。這種情況你必須進行檢查了。
    • 2、多核CPU - 多車道 - 數字/CPU核數 在0.00-1.00之間正常
      • 多核CPU的話,滿負荷狀态的數字為 "1.00 * CPU核數",即雙核CPU為2.00,四核CPU為4.00。
    • 單核負載在0.7以下是安全的,超過0.7就需要進行優化了。
    • 看5分鐘和15分鐘的比較好,即後面2個數字
    • 獲得CPU核心數目 grep 'model name' /proc/cpuinfo | wc -l

vmstat

  • 監視記憶體使用情況,vmstat是Virtual Meomory Statistics(虛拟記憶體統計)的縮寫,可實時動态監視作業系統的虛拟記憶體、程序、CPU活動。
  • 可對作業系統的虛拟記憶體、程序、IO 讀寫、CPU 活動等進行監視。它是對系統的整體情況進行統計,不足之處是無法對某個程序進 行深入分析
  • 可觀察每秒上下文切換數
vmstat 2 20
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 731272 169216 1833540    0    0     1     7    0    0  2  1 98  0  0
 0  0      0 731256 169216 1833540    0    0     0    36  742 1312  0  0 100  0  0
 0  0      0 733284 169216 1833540    0    0     0    38 2074 2814  7  2 91  0  0
 0  0      0 733036 169216 1833540    0    0     0     0  724 1293  0  0 100  0  0
 1  0      0 731052 169216 1833540    0    0     0    48 1295 1954  4  1 96  0  0
 0  0      0 731052 169216 1833540    0    0     0     0  720 1301  0  0 100  0  0
 0  0      0 731052 169216 1833540    0    0     0     0  757 1323  0  0 100  0  0
 0  0      0 730804 169216 1833548    0    0     0    36  867 1402  0  0 99  0  0
 0  0      0 730804 169216 1833548    0    0     0    76  774 1332  0  0 100  0  0
 0  0      0 731052 169216 1833552    0    0     0    70 1442 2084  4  1 95  0  0
 1  0      0 727732 169216 1833552    0    0     0    24  867 1429  0  0 99  0  0
 0  0      0 731176 169216 1833552    0    0     0    16 1262 1892  3  1 96  0  0
 0  0      0 731176 169216 1833552    0    0     0     8  769 1300  0  0 100  0  0
 0  0      0 731176 169216 1833552    0    0     0    26  769 1329  0  0 100  0  0
 0  0      0 731176 169216 1833552    0    0     0     4  802 1364  0  0 100  0  0
 0  0      0 731176 169216 1833552    0    0     0     0  693 1272  0  0 100  0  0
 0  0      0 730680 169216 1833552    0    0     0    16 1341 2010  4  1 96  0  0
 0  0      0 730680 169216 1833552    0    0     0    26 1049 1592  1  1 99  0  0
 0  0      0 731548 169216 1833552    0    0     0    16 1341 1980  4  1 95  0  0
 0  0      0 731532 169216 1833552    0    0     0    22  728 1304  0  0 100  0  0           
Procs(程序):
  • r: 運作隊列中程序數量
  • b: 等待IO的程序數量
Memory(記憶體):
  • swpd: 使用虛拟記憶體大小
  • free: 可用記憶體大小
  • buff: 用作緩沖的記憶體大小
  • cache: 用作緩存的記憶體大小
Swap:
  • si: 每秒從交換區寫到記憶體的大小
  • so: 每秒寫入交換區的記憶體大小
IO:(現在的Linux版本塊的大小為1024bytes)
  • bi: 每秒讀取的塊數
  • bo: 每秒寫入的塊數
system:
  • in: 每秒中斷數,包括時鐘中斷
  • cs: 每秒上下文切換數
CPU(以百分比表示)
  • us: 使用者程序執行時間(user time)
  • sy: 系統程序執行時間(system time)
  • id: 空閑時間(包括IO等待時間)
  • wa: 等待IO時間

pidstat

  • 用于細緻地觀察程序,可監控 CPU、IO、記憶體。
  • 示例:-p 指定程序,-u 表示監控 CPU(-t 表示監控線程,-d 表示監控磁盤 io 的情況),每秒采樣 1 次,共采樣 4 次。
  • -u
pidstat -p 11757 -u  1 10
Linux 3.10.0-514.26.2.el7.x86_64 (spider-competitor-1.real.bj.aly)     06/02/2020     _x86_64_    (4 CPU)

07:59:01 PM   UID       PID    %usr %system  %guest    %CPU   CPU  Command
07:59:02 PM  1000     11757    1.00    0.00    0.00    1.00     3  java
07:59:03 PM  1000     11757    0.00    0.00    0.00    0.00     3  java
07:59:04 PM  1000     11757    0.00    0.00    0.00    0.00     3  java
07:59:05 PM  1000     11757    1.00    0.00    0.00    1.00     3  java
07:59:06 PM  1000     11757    0.00    0.00    0.00    0.00     3  java
07:59:07 PM  1000     11757    0.00    0.00    0.00    0.00     3  java
07:59:08 PM  1000     11757    2.00    0.00    0.00    2.00     3  java
07:59:09 PM  1000     11757    0.00    0.00    0.00    0.00     3  java
07:59:10 PM  1000     11757    1.00    0.00    0.00    1.00     3  java           
  • -r 記憶體使用情況統計
pidstat -p 11757 -r  1 10
Linux 3.10.0-514.26.2.el7.x86_64 (spider-competitor-1.real.bj.aly)     06/02/2020     _x86_64_    (4 CPU)

07:59:35 PM   UID       PID  minflt/s  majflt/s     VSZ    RSS   %MEM  Command
07:59:36 PM  1000     11757      0.00      0.00 8205164 4963196  61.96  java
07:59:37 PM  1000     11757      2.00      0.00 8205164 4963196  61.96  java
07:59:38 PM  1000     11757      1.00      0.00 8205164 4963196  61.96  java
07:59:39 PM  1000     11757      0.00      0.00 8205164 4963196  61.96  java
07:59:40 PM  1000     11757      6.00      0.00 8205164 4963196  61.96  java
07:59:41 PM  1000     11757      0.00      0.00 8205164 4963196  61.96  java
07:59:42 PM  1000     11757      2.00      0.00 8205164 4963196  61.96  java
07:59:43 PM  1000     11757      2.00      0.00 8205164 4963196  61.96  java
07:59:44 PM  1000     11757      0.00      0.00 8205164 4963196  61.96  java

minflt/s: 每秒次缺頁錯誤次數(minor page faults),次缺頁錯誤次數意即虛拟記憶體位址映射成實體記憶體位址産生的page fault次數
majflt/s: 每秒主缺頁錯誤次數(major page faults),當虛拟記憶體位址映射成實體記憶體位址時,相應的page在swap中,這樣的page fault為major page fault,一般在記憶體使用緊張時産生
VSZ:      該程序使用的虛拟記憶體(以kB為機關)
RSS:      該程序使用的實體記憶體(以kB為機關)
%MEM:     該程序使用記憶體的百分比
Command:  拉起程序對應的指令           
  • -d
pidstat -p 11757 -d  1 10
Linux 3.10.0-514.26.2.el7.x86_64 (spider-competitor-1.real.bj.aly)     06/02/2020     _x86_64_    (4 CPU)

07:59:58 PM   UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
07:59:59 PM  1000     11757      0.00      0.00      0.00  java
08:00:00 PM  1000     11757      0.00      0.00      0.00  java
08:00:01 PM  1000     11757      0.00      0.00      0.00  java
08:00:02 PM  1000     11757      0.00      0.00      0.00  java
08:00:03 PM  1000     11757      0.00      0.00      0.00  java
08:00:04 PM  1000     11757      0.00      0.00      0.00  java
08:00:05 PM  1000     11757      0.00      0.00      0.00  java

kB_rd/s: 每秒程序從磁盤讀取的資料量(以kB為機關)
kB_wr/s: 每秒程序向磁盤寫的資料量(以kB為機關)
Command: 拉起程序對應的指令