本篇文章是Linux命令系列的第一篇文章
又挖了一個新坑~
本系列將按照上面五大模塊對Linux命令講解
讓你知道一個後臺開發工程師
除了cd ls rm這些基本的操作
真正到生產環境下,還需要掌握哪些linux命令
建立了一個倉庫
將本系列所涉及的命令都放到github倉庫裏了
會保證一直更新
歡迎大家多提issue 多多交流
(順手也可以給個star , 哈哈~)
點擊文末 "閱讀原文"
獲取倉庫地址
性能監測相關命令
mpstat
功能:
顯示CPU的狀態信息
這些信息存放在/proc/stat文件中。
在多CPUs系統裏,
其不但能查看所有CPU的平均狀況信息,
而且能夠查看特定CPU的信息。
輸入語法:
mpstat(選項)(參數)
選項
-A : 此選項等效於# mpstat -I ALL -u -P ALL
-I {SUM | CPU | ALL} : 報告中斷統計信息。 使用SUM關鍵字,mpstat命令報告每個處理器的中斷總數。使用CPU關鍵字,顯示CPU或CPU每秒接收的每個中斷的數量。ALL關鍵字等效於指定上面的所有關鍵字,因此顯示所有中斷統計信息。
-P {cpu [,...] | ON | ALL} : 指示要報告統計信息的處理器編號。cpu是處理器號。注意,處理器0是第一個處理器。ON關鍵字表示將爲每個在線處理器報告統計信息,而ALL關鍵字指示要爲所有處理器報告統計信息。
參數
間隔時間:每次報告的間隔時間(秒);
次數:顯示報告的次數。
輸出信息:
user 在internal時間段裏,用戶態的CPU時間(%),不包含 nice值爲負 進程 (usr/total)*100
nice 在internal時間段裏,nice值爲負進程的CPU時間(%) (nice/total)*100
system 在internal時間段裏,內核態的CPU時間(%) (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
實例:
mpstat
顯示開機到現在以來cpu的平均狀態信息
Linux 4.15.0-88-generic (kyle) 2020年02月25日 _x86_64_ (4 CPU)
20時12分09秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
20時12分09秒 all 27.16 0.55 9.85 0.34 0.00 0.43 0.00 0.00 0.00 61.66
mpstat -P ALL 2 3
每隔2秒顯示一次 所有cpu的狀態信息
一共產生3個間隔的信息
最後給出這3次間隔的平均信息
kylechen@kyle:~$ mpstat -P ALL 2 3
Linux 4.15.0-88-generic (kyle) 2020年02月25日 _x86_64_ (4 CPU)
20時12分43秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
20時12分45秒 all 9.96 0.00 3.57 0.00 0.00 0.12 0.00 0.00 0.00 86.35
20時12分45秒 0 8.96 0.00 2.99 0.00 0.00 0.00 0.00 0.00 0.00 88.06
20時12分45秒 1 8.87 0.00 3.45 0.49 0.00 0.49 0.00 0.00 0.00 86.70
20時12分45秒 2 9.76 0.00 2.44 0.00 0.00 0.00 0.00 0.00 0.00 87.80
20時12分45秒 3 12.32 0.00 4.43 0.00 0.00 0.00 0.00 0.00 0.00 83.25
20時12分45秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
20時12分47秒 all 13.43 0.00 4.68 0.00 0.00 0.12 0.00 0.00 0.00 81.77
20時12分47秒 0 16.59 0.00 5.69 0.00 0.00 0.47 0.00 0.00 0.00 77.25
20時12分47秒 1 12.08 0.00 3.86 0.00 0.00 0.00 0.00 0.00 0.00 84.06
20時12分47秒 2 12.80 0.00 4.74 0.00 0.00 0.00 0.00 0.00 0.00 82.46
20時12分47秒 3 12.44 0.00 5.26 0.00 0.00 0.00 0.00 0.00 0.00 82.30
20時12分47秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
20時12分49秒 all 8.44 0.00 2.02 0.00 0.00 0.13 0.00 0.00 0.00 89.42
20時12分49秒 0 7.69 0.00 1.54 0.00 0.00 0.51 0.00 0.00 0.00 90.26
20時12分49秒 1 6.47 0.00 2.99 0.00 0.00 0.50 0.00 0.00 0.00 90.05
20時12分49秒 2 10.66 0.00 1.02 0.00 0.00 0.00 0.00 0.00 0.00 88.32
20時12分49秒 3 8.46 0.00 2.49 0.00 0.00 0.00 0.00 0.00 0.00 89.05
平均時間: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
平均時間: all 10.65 0.00 3.44 0.00 0.00 0.12 0.00 0.00 0.00 85.78
平均時間: 0 11.20 0.00 3.46 0.00 0.00 0.33 0.00 0.00 0.00 85.01
平均時間: 1 9.17 0.00 3.44 0.16 0.00 0.33 0.00 0.00 0.00 86.91
平均時間: 2 11.09 0.00 2.77 0.00 0.00 0.00 0.00 0.00 0.00 86.13
平均時間: 3 11.09 0.00 4.08 0.00 0.00 0.00 0.00 0.00 0.00 84.83
mpstat -P ALL -I SUM
查看cpu中斷的統計(各個cpu分開顯示)
inux 4.15.0-88-generic (kyle) 2020年02月25日 _x86_64_ (4 CPU)
20時13分24秒 CPU intr/s
20時13分24秒 all 2057.27
20時13分24秒 0 473.14
20時13分24秒 1 591.17
20時13分24秒 2 687.38
20時13分24秒 3 493.70
mpstat -I SUM
查看cpu中斷的統計(各個cpu合併顯示)
kylechen@kyle:~$ mpstat -I SUM
Linux 4.15.0-88-generic (kyle) 2020年02月25日 _x86_64_ (4 CPU)
20時13分47秒 CPU intr/s
20時13分47秒 all 2036.32
free
功能
free指令會顯示內存的使用情況,
包括實體內存,
虛擬的交換文件內存,
共享內存區段,
以及系統核心使用的緩衝區等。
輸入語法
free [-bkmotV][-s <間隔秒數>]
參數說明:
-b 以Byte爲單位顯示內存使用情況。
-k 以KB爲單位顯示內存使用情況。
-m 以MB爲單位顯示內存使用情況。
-h 以合適的單位顯示內存使用情況,最大爲三位數,自動計算對應的單位值。單位如下:
B = bytes
K = kilos
M = megas
G = gigas
T = teras
-t 顯示內存總和列。
-V 顯示版本信息。
-o 不顯示緩衝區調節列。
-s<間隔秒數>持續觀察內存使用狀況。
輸出信息
total 列顯示系統總的可用物理內存和交換空間大小。
used 列顯示已經被使用的物理內存和交換空間。
free 列顯示還有多少物理內存和交換空間可用使用。
shared 列顯示被共享使用的物理內存大小。(進程間的共享內存)
buff/cache 列顯示被 磁盤緩存 使用的物理內存大小。(buffer表示寫緩衝 cache表示讀緩衝)
available 列顯示還可以被應用程序使用的物理內存大小
注意點
1.當應用程序需要內存時,如果沒有足夠的 free 內存可以用
,內核就會從 buffer 和 cache 中回收內存來滿足應用程序的請
求。所以從應用程序的角度來說,available = free + buffer + cache。
請注意,這只是一個很理想的計算方式,實際中的數據往往有較大的誤差。
2.swap space 是磁盤上的一塊區域,可以是一個分區,也可以是一個文件
。所以具體的實現可以是 swap 分區也可以是 swap 文件
。當系統物理內存喫緊時,Linux 會將內存中不常訪問的數據保存到 swap 上,
這樣系統就有更多的物理內存爲各個進程服務,而當系統需要訪問 swap 上存儲的內容時
,再將 swap 上的數據加載到內存中,這就是常說的換出和換入。
交換空間可以在一定程度上緩解內存不足的情況,
但是它需要讀寫磁盤數據,所以性能不是很高。
實例
free 不指定單位顯示內存使用情況
總計 已用 空閒 共享 緩衝/緩存 可用
內存: 3920116 2680416 179976 596300 1059724 408108
交換: 999420 519916 479504
free -h以合適的單位顯示內存使用情況
kylechen@kyle:~$ free -h
總計 已用 空閒 共享 緩衝/緩存 可用
內存: 3.7G 2.6G 178M 573M 1.0G 401M
交換: 975M 507M 468M
free -th以合適的單位顯示內存使用情 況,同時顯示總量列
kylechen@kyle:~$ free -th
總計 已用 空閒 共享 緩衝/緩存 可用
內存: 3.7G 2.5G 200M 570M 1.0G 424M
交換: 975M 507M 468M
總量: 4.7G 3.0G 668M
free -h -s 1 以1秒爲間隔顯示內存使用情況
kylechen@kyle:~$ free -h -s 1
總計 已用 空閒 共享 緩衝/緩存 可用
內存: 3.7G 2.5G 198M 569M 1.0G 421M
交換: 975M 507M 468M
總計 已用 空閒 共享 緩衝/緩存 可用
內存: 3.7G 2.5G 196M 571M 1.0G 419M
交換: 975M 507M 468M
總計 已用 空閒 共享 緩衝/緩存 可用
內存: 3.7G 2.5G 195M 571M 1.0G 419M
交換: 975M 507M 468M
總計 已用 空閒 共享 緩衝/緩存 可用
內存: 3.7G 2.5G 196M 571M 1.0G 420M
交換: 975M 507M 468M
總計 已用 空閒 共享 緩衝/緩存 可用
內存: 3.7G 2.5G 199M 568M 1.0G 423M
交換: 975M 507M 468M
top
功能
top是系統管理員最重要的工具之一。被廣泛用於監視服務器的負載。
它可以動態的查看系統當前正在運行的進程情況 , 內存使用情況, cpu使用情況
也就是說上面mpstate 和free能實現的功能 它都內在的包含了
輸入語法
很簡單 直接輸入top
輸出信息
任務: 298 total, 1 running, 246 sleeping, 0 stopped, 0 zombie
%Cpu(s): 5.7 us, 1.6 sy, 0.0 ni, 92.6 id, 0.1 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 3920116 total, 301948 free, 2514912 used, 1103256 buff/cache
KiB Swap: 999420 total, 480272 free, 519148 used. 618380 avail Mem
進程id USER PR NI VIRT RES SHR � %CPU %MEM TIME+ COMMAND
1590 kylechen 20 0 3974220 265424 72628 S 7.3 6.8 5:33.19 gnome-shell
1446 kylechen 20 0 521960 38412 19292 S 6.3 1.0 3:28.27 Xorg
3008 kylechen 20 0 780520 50972 32452 S 4.6 1.3 0:17.32 gnome-term+
2779 kylechen 20 0 1201196 318344 79024 S 1.3 8.1 11:48.81 chrome
1955 kylechen 20 0 1505112 399200 243564 S 1.0 10.2 5:32.38 chrome
1 root 20 0 225908 4064 1584 S 0.7 0.1 0:08.15 systemd
1036 gdm 20 0 3492528 89676 62056 S 0.7 2.3 0:11.70 gnome-shell
1993 kylechen 20 0 556488 55780 24440 S 0.7 1.4 0:34.27 chrome
8 root 20 0 0 0 0 I 0.3 0.0 0:08.76 rcu_sched
983 mysql 20 0 1358648 0 0 S 0.3 0.0 0:03.85 mysqld
1571 kylechen 20 0 220792 156 0 S 0.3 0.0 0:03.21 at-spi2-re+
2192 kylechen 20 0 486420 5828 0 S 0.3 0.1 0:01.88 sogou-qimp+
5330 kylechen 20 0 2621992 450080 80948 S 0.3 11.5 1:13.24 XMind
5708 root 20 0 0 0 0 I 0.3 0.0 0:01.65 kworker/u8+
6974 kylechen 20 0 880400 185648 107616 S 0.3 4.7 0:45.80 chrome
7245 root 20 0 0 0 0 I 0.3 0.0 0:00.22 kworker/2:0
7760 kylechen 20 0 51360 4004 3332 R 0.3 0.1 0:00.19 top
輸出信息如上所示 一大坨 很繁瑣 咱們一行一行來分析
第一行表示 當前的進程狀態 總共有298個進程 1個處理runing 246個處於sleeping 0個處於stopped狀態
任務: 298 total, 1 running, 246 sleeping, 0 stopped
第二行表示 當前的cpu狀態 這裏顯示的狀態參數其實和mpstat那裏說的是一樣的 具體可以看上面的mpstat命令講解
%Cpu(s): 5.7 us, 1.6 sy, 0.0 ni, 92.6 id, 0.1 wa, 0.0 hi,
**第三四行表示 **當前的內存狀態 這裏顯示的狀態參數其實和free那裏說的是一樣的 具體可以看上面的free命令講解
KiB Mem : 3920116 total, 301948 free, 2514912 used, 1103256 buff/cache
KiB Swap: 999420 total, 480272 free, 519148 used. 6183800.1 wa, 0.0 hi,
後面幾行其實 表示的就是每個進程具體佔用的系統資源 會隨着時間動態變化
PID
進程ID,進程的唯一標識符
USER
進程所有者的實際用戶名。
PR
進程的調度優先級。這個字段的一些值是’rt’。這意味這這些進程運行在實時態。
NI
進程的nice值(優先級)。越小的值意味着越高的優先級。
VIRT
進程使用的虛擬內存。
RES
駐留內存大小。駐留內存是任務使用的非交換物理內存大小。
SHR
SHR是進程使用的共享內存。
S
這個是進程的狀態。它有以下不同的值:
D – 不可中斷的睡眠態。
R – 運行態
S – 睡眠態
T – 被跟蹤或已停止
Z – 殭屍態
I - 空閒狀態(idle)
%CPU
自從上一次更新時到現在任務所使用的CPU時間百分比。
%MEM
進程使用的可用物理內存百分比。
TIME+
任務啓動後到現在所使用的全部CPU時間,精確到百分之一秒。
COMMAND
運行進程所使用的命令。
還有許多在默認情況下不會顯示的輸出,它們可以顯示進程的頁錯誤、有效組和組ID和其他更多的信息。
進程id USER PR NI VIRT RES SHR � %CPU %MEM TIME+ COMMAND
1590 kylechen 20 0 3974220 265424 72628 S 7.3 6.8 5:33.19 gnome-shell
1446 kylechen 20 0 521960 38412 19292 S 6.3 1.0 3:28.27 Xorg
3008 kylechen 20 0 780520 50972 32452 S 4.6 1.3 0:17.32 gnome-term+
2779 kylechen 20 0 1201196 318344 79024 S 1.3 8.1 11:48.81 chrome
.......
實例
實例1:top
top - 21:25:55 up 1:27, 1 user, load average: 1.51, 1.87, 1.49
任務: 305 total, 2 running, 250 sleeping, 0 stopped, 0 zombie
%Cpu(s): 22.7 us, 1.8 sy, 0.0 ni, 75.1 id, 0.1 wa, 0.0 hi, 0.3 si, 0.0 st
KiB Mem : 3920116 total, 121880 free, 2859016 used, 939220 buff/cache
KiB Swap: 999420 total, 333328 free, 666092 used. 182088 avail Mem
PID USER PR NI VIRT RES SHR � %CPU %MEM TIME+ COMMAND
2779 kylechen 20 0 1191.7m 314.5m 59.2m S 17.1 8.2 20:45.14 chrome
1590 kylechen 20 0 3881.1m 242.1m 70.3m R 4.8 6.3 7:19.67 gnome-shell
1446 kylechen 20 0 444.6m 31.1m 11.8m S 1.3 0.8 4:42.48 Xorg
8711 kylechen 20 0 622.0m 17.4m 5.6m S 0.7 0.5 0:02.43 gnome-termi+
1955 kylechen 20 0 1458.6m 348.2m 189.5m S 0.5 9.1 7:31.10 chrome
1989 kylechen 20 0 653.0m 112.1m 47.2m S 0.5 2.9 7:06.33 chrome
8736 kylechen 20 0 50.2m 1.5m 0.8m R 0.2 0.0 0:05.51 top
1036 gdm 20 0 3410.7m 82.2m 55.3m S 0.1 2.1 0:15.10 gnome-shell
1484 kylechen 20 0 442.8m 48.0m 8.9m S 0.1 1.3 0:40.19 fcitx
1993 kylechen 20 0 551.4m 48.9m 17.8m S 0.1 1.3 0:45.63 chrome
3299 kylechen 20 0 633.0m 20.9m 5.1m S 0.1 0.5 0:17.90 chrome
1 root 20 0 220.6m 3.0m 0.6m S 0.0 0.1 0:10.02 systemd
2 root 20 0 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 kthreadd
4 root 0 -20 0.0m 0.0m 0.0m I 0.0 0.0 0:00.00 kworker/0:0H
6 root 0 -20 0.0m 0.0m 0.0m I 0.0 0.0 0:00.00 mm_percpu_wq
7 root 20 0 0.0m 0.0m 0.0m S 0.0 0.0 0:00.22 ksoftirqd/0
8 root 20 0 0.0m 0.0m 0.0m I 0.0 0.0 0:11.86 rcu_sched
實例2: 交互式命令
top是一個交互式的命令
所以用top調出動態顯示的進程狀態以後
在界面上繼續用鍵盤輸入指令
會繼續在界面上執行對應的操作
交互命令1: 回車/空格
top命令默認在一個特定間隔(3秒)後刷新顯示。
要手動刷新,用戶可以輸入回車或者空格。
交互命令2: B
一些重要信息會以加粗字體顯示。
這個命令可以切換粗體顯示。
交互命令3: d 或s
當按下’d’或’s’時,你
將被提示輸入一個值(以秒爲單位),
它會以設置的值作爲刷新間隔。
如果你這裏輸入了1,top將會每秒刷新。
交互命令4 :‘R’
切換反向/常規排序。
交互命令5 :‘V’
切換樹視圖。
交互命令6: ‘k’
top命令中最重要的一個命令之一。
用於發送信號給任務(通常是結束任務)。
交互命令7: ‘e’
切換顯示的單位
依次以k ->m->g->t->p單位選擇
我是陳同學
讓技術
有溫度
你的支持是我搬磚的動力
▼
往期精彩回顧
▼
點擊"閱讀原文" 獲取倉庫地址
聽說點擊在看的今年都會暴富脫單,升職加薪