和它比起來,其他 Linux 命令都是渣渣!

2024年2月6日 24点热度 0人点赞

大傢好,我是民工哥!

玩 Linux 系統的,都應該知道想要玩轉它,就得必須玩轉 Linux 的小黑框,簡單來說就是必須搞懂 Linux 的常用命令!

所以,完全搞懂一個命令及其參數的用法,你會發現它是非常強大且牛逼的,Linux 系統就有這麼一個命令:sar,功能非常強大且牛逼,但是,很多人都沒能完全搞懂它。

今天,民工哥就和大傢一起來聊一聊這個強大且牛掰的命令:sar

簡介

sar(System Activity Reporter 系統活動情況報告)是目前 Linux 上最為全面的系統性能分析工具之一。

它可以從多方面對系統的資源使用情況進行監控,包括:文件的讀寫情況、系統調用的使用情況、磁盤 I/O、CPU 效率、內存使用狀況、進程活動及 IPC 有關的活動等,然後將系統中的各種性能數據收集起來並顯示給用戶。

安裝

sar 命令來自於 sysstat 這個工具包,如果系統提示 sar 命令不存在,需先安裝 sysstat。

[root@CentOS7-1 ~]# sar
-bash: sar: command not found
[root@CentOS7-1 ~]# yum install sysstat -y

[root@CentOS7-1 ~]# sar

語法格式

sar -[ options ] time_interval number_of_tines_to_display

常用參數說明

-A  #匯總所有的報告
-a  #查看文件讀寫使用情況
-B  #查看附加的緩存的使用情況
-b  #查看緩存的使用情況
-c  #查看系統調用的使用情況
-d  #查看磁盤的使用情況
-g  #查看串口的使用情況
-h  #查看關於buffer使用的統計數據
-m  #查看IPC消息隊列和信號量的使用情況
-n  #查看命名cache的使用情況
-p  #查看調頁活動的使用情況
-q  #查看平均負載
-R  #查看進程的活動情況
-r  #查看沒有使用的內存頁面和硬盤塊
-u  #查看CPU的利用率
-v  #查看進程、i節點、文件和鎖表狀態
-w  #查看系統交換活動狀況
-y  #查看TTY設備活動狀況

常用功能介紹

sar 命令的一些常用選項和功能如下:

  • CPU使用統計:使用“-u”選項可以輸出整體CPU的使用情況,包括用戶模式下的時間百分比、系統模式下的時間百分比等。
  • 內存使用情況:使用“-r”選項可以查看沒有使用的內存頁面和硬盤塊的情況。
  • 磁盤使用情況:使用“-d”選項可以查看每個塊設備的活動情況,包括讀取和寫入的塊數等。
  • 網絡活動情況:使用“-n”選項可以查看網絡連接、傳輸速率等網絡活動情況。
  • 進程活動情況:使用“-P”選項可以查看進程的創建、終止等進程活動情況。
  • 上下文切換情況:使用“-w”選項可以查看系統上下文切換情況,了解系統中的進程調度情況。
  • 系統負載情況:使用“-q”選項可以查看系統負載情況,包括隊列長度和負載信息等。
  • 緩沖區使用情況:使用“-b”選項可以查看緩沖區的使用情況,了解系統的I/O性能。
  • 文件讀寫情況:使用“-a”選項可以查看文件讀寫情況,了解磁盤的讀寫負載。

sar命令和top命令區別

兩者都是可以用於監控系統性能的工具,但它們之間存在一些區別。

  • sar命令是一個系統監視和記錄工具,它可以收集、報告和保存系統活動信息,包括CPU使用情況、內存使用情況、磁盤活動、網絡活動等。sar命令可以將收集到的數據以表格或圖形方式顯示,並支持對歷史數據的查詢和分析。因此,sar命令更適合用於系統性能的長期監控和數據記錄。
  • top命令則是一個動態的監視工具,它可以實時顯示系統中各個進程的資源占用情況,包括CPU使用率、內存占用、進程優先級等。top命令還可以根據用戶的需要動態地調整顯示的進程信息,並提供了一個交互式的界面供用戶進行操作。因此,top命令更適合用於短期的實時性能監控和進程管理。

應用舉例

統計網絡信息

[root@CentOS7-1 ~]# sar -n DEV 1 3

查看內存交換空間的使用率信息

[root@CentOS7-1 ~]# sar -r
Linux 3.10.0-1127.18.2.el7.x86_64 (CentOS7-1)  01/18/2024  _x86_64_ (1 CPU)
04:28:37 AM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty
04:28:55 AM    127328    868356     87.21         0    542496    679228     21.96    350504    364784        24
04:29:00 AM    127328    868356     87.21         0    542516    679228     21.96    350504    364784        44
04:30:01 AM    126700    868984     87.28         0    542644    680828     22.01    350956    364680         0
Average:       127119    868565     87.23         0    542552    679761     21.98    350655    364749        23

輸出的結果字段說明

kbmemfree  #空閑物理內存量
kbmemused  #使用中的物理內存量
%memused   #物理內存量使用率
kbbuffers  #內核中作為緩沖區使用的物理內存容量
kbcacheed  #內核中作為緩存使用的物理內存容量
kbswpfree  #交換區的空閑容量
kbswpused  #使用中的交換區容量

查看CPU使用率

[root@centos7 ~]# sar -u
Linux 3.10.0-1127.18.2.el7.x86_64 (centos7)  03/28/2021  _x86_64_ (1 CPU)
11:10:02 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
11:20:01 AM     all      0.03      0.00      0.18      0.02      0.00     99.77
11:30:01 AM     all      0.03      0.00      0.17      0.02      0.00     99.78
Average:        all      0.03      0.00      0.18      0.02      0.00     99.77

查看平均負載

[root@centos7 ~]# sar -q
Linux 3.10.0-1127.18.2.el7.x86_64 (centos7)  03/28/2021  _x86_64_ (1 CPU)
11:10:02 AM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
11:20:01 AM         1       108      0.00      0.01      0.05         0
11:30:01 AM         1       108      0.00      0.01      0.05         0
Average:            1       108      0.00      0.01      0.05         0

查看頁面交換發生狀況

[root@centos7 ~]# sar -w
Linux 3.10.0-1127.18.2.el7.x86_64 (centos7)  03/28/2021  _x86_64_ (1 CPU)
11:10:02 AM    proc/s   cswch/s
11:20:01 AM      0.02     19.10
11:30:01 AM      0.03     19.92
11:40:01 AM      0.02     19.45
Average:         0.02     19.49

查看I/O和傳送速率的統計信息

[root@centos7 ~]# sar -b
Linux 3.10.0-1127.18.2.el7.x86_64 (centos7)  03/28/2021  _x86_64_ (1 CPU)
11:10:02 AM       tps      rtps      wtps   bread/s   bwrtn/s
11:20:01 AM      0.06      0.00      0.06      0.00      0.74
11:30:01 AM      0.03      0.00      0.03      0.00      0.40
Average:         0.05      0.00      0.05      0.00      0.57

輸出字段說明

tps       #每秒鐘物理設備的 I/O 傳輸總量                   
rtps      #每秒鐘從物理設備讀入的數據總量                  
wtps      #每秒鐘向物理設備寫入的數據總量                  
bread/s   #每秒鐘從物理設備讀入的數據量,單位為 塊/s    
bwrtn/s   #每秒鐘向物理設備寫入的數據量,單位為 塊/s

查看塊設備

[root@CentOS7-1 ~]# sar -d 1 2
Linux 3.10.0-1127.18.2.el7.x86_64 (CentOS7-1)  01/18/2024  _x86_64_ (1 CPU)
04:42:51 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
04:42:52 AM    dev8-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
04:42:52 AM   dev11-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
04:42:52 AM  dev253-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
04:42:52 AM  dev253-1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
04:42:52 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
04:42:53 AM    dev8-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
04:42:53 AM   dev11-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
04:42:53 AM  dev253-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
04:42:53 AM  dev253-1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
04:42:53 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
04:42:54 AM    dev8-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
04:42:54 AM   dev11-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
04:42:54 AM  dev253-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
04:42:54 AM  dev253-1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

輸出的信息說明

tps #每秒從物理磁盤 I/O 的次數。
rd_sec/s #每秒讀扇區的次數。
wr_sec/s #每秒寫扇區的次數。
avgrq-sz #平均每次設備 I/O 操作的數據大小(扇區)。
avgqu-sz #磁盤請求隊列的平均長度。
await    #從請求操作到系統完成處理,每次請求的平均消耗時間,包括請求隊列等待時間,單位是毫秒(1 秒=1000 毫秒)。
svctm #系統處理每次請求的平均時間,不包括在請求隊列中消耗的時間。
%util #I/O 請求占 CPU 的百分比,比率越大,說明越飽和。

高級功能

多系統監控

sar命令可以在多個系統之間進行分佈式監控,並匯總各個系統的性能數據。用戶可以使用“-A”選項來指定要監控的系統,並使用“-f”選項指定數據文件。

生成自定義報告

sar 命令可以將收集到的數據以表格或圖形方式顯示,並支持生成自定義報告。用戶可以使用“-o”選項指定報告文件名,並使用“-f”選項指定數據文件。

報警和通知

sar命令可以配置報警和通知功能,當系統資源使用超過預設閾值時,自動發送警報或通知給相關人員。

數據導出和導入

sar 命令可以將收集到的數據導出為文件,以便在其他工具中進行進一步分析。同時,用戶也可以從文件中導入數據,以進行歷史數據比較或其他用途。

與其他工具集成

sar命令可以與其他系統管理工具集成,如Nagios、Zabbix等,以實現自動化監控和報警功能。

總結

總之,sar 命令是一個功能強大的監控工具,具有、報告生成、多系統監控、自定義監控選項、報警和通知、數據導出和導入以及與其他工具集成等高級功能。通過合理使用這些功能,用戶可以更好地了解系統性能狀況並進行相應的優化和調整。

這麼牛逼的命令行工具,你確定不整一下?

今天的分享就到這裡了,如有幫助,歡迎一鍵三連(點贊、評論、轉發)支持一下!

讀者專屬群:誠邀你加入技術交流群,一起卷!

如有錯誤或其它問題,歡迎小夥伴留言評論、指正。如有幫助,歡迎點贊 轉發分享。更多相關開源技術文章,請持續關註!資源分享小編為你精心準備了2048G的各類學習資料。包括系統運維、數據庫、redis、MogoDB、電子書、Java基礎課程、Java實戰項目、架構師綜合教程、架構師實戰項目、大數據、Docker容器、ELK Stack、機器學習、BAT面試精講視頻等。