<noframes id="llnpn"><pre id="llnpn"><strike id="llnpn"></strike></pre><address id="llnpn"><strike id="llnpn"><span id="llnpn"></span></strike></address>

<pre id="llnpn"></pre>

    <address id="llnpn"><strike id="llnpn"><span id="llnpn"></span></strike></address>

    <noframes id="llnpn">

      <noframes id="llnpn"><pre id="llnpn"></pre>
      • 自動秒收錄
      • 軟件:1973
      • 資訊:56157|
      • 收錄網站:175404|

      IT精英團

      如何用10行bash shell腳本監控Linux?

      如何用10行bash shell腳本監控Linux?

      瀏覽次數:
      評論次數:
      編輯: 樂詠
      信息來源: ITPUB
      更新日期: 2022-05-06 18:34:34
      摘要

      http://985.so/xbtd子沐愛掃地(譯)監控我們的環境對于服務器運維來說至關重要,尤其是在部署新的應用程序時。如今,公司每天都使用開源解決方案來監控系統資源。但是,當出于測試的目的來監控

      • 正文開始
      • 相關閱讀
      • 推薦作品

      http://985.so/xbtd子木喜歡掃地(翻譯)

      監控我們的環境對于服務器運營和維護至關重要,尤其是在部署新應用程序時。如今,公司每天都使用開源解決方案來監控系統資源。然而,當出于測試目的監視一段時間時,bash腳本就派上了用場。

      在本教程中,我們將編寫一個bash shell腳本,它將輸出三個列表,顯示我們機器上的內存、磁盤和CPU的百分比。

      我們開始吧!

      該腳本基本上由三個主要部分組成:

      1. 監控內存:

      free-m | awk ' NR==2 { printf ' % . 2f % % \ t \ t ',$3*100/$2} '

      9.24%

      Free -m是顯示已用和可用內存的命令,輸出如下:

      [root@localhosttmp]#free-m

      totalusedfreesharedbufferscached

      Mem:9969290401131

      -/buffers/cache:49947

      Swap:158301583

      但是,我們需要從上面的輸出中獲得第二行的總內存和已用內存。我們可以使用AWK從給定的輸出中提取數據。

      AWK是一種用于文本處理和數據提取的編程語言。這是大多數UNIX系統的標準功能。Awk' NR==2 '從第二行提取數據。分別使用和總計$3和$2。

      監控磁盤

      df-h | awk ' $ NF=='/' { printf ' % s \ t \ t ',$5} '

      7%

      第二個命令輸出使用的磁盤百分比。Df -h輸出與磁盤使用和分區相關的數據。

      [root@localhosttmp]#

       df -h
      Filesystem                    Size  Used Avail Use% Mounted on
      /dev/mapper/VolGroup-lv_root   14G  814M   12G   7% /
      tmpfs                         499M     0  499M   0% /dev/shm
      /dev/sda1                     485M   32M  428M   7% /boot

      awk $NF 輸出字段數。但是,df -h | awk '$NF=="/" 將轉到包含字符 / 的那一行。$5 將從該行中選擇第 5 個字段。這可確保該命令能夠提取正確的磁盤使用百分比(在我們的示例中為 %7)。

      監控 CPU

      top -bn1 | grep load | awk '{printf "%.2f%%\t\t\n", $(NF-2)}'

      top -bn1 命令將只執行一次 top 命令(n1 = 一次迭代),當我們想在 bash 腳本中使用 top 或將其數據輸出到文件時使用可以使用 -b 選項。

      grep load 將輸出包含字符串 load 的行。$(NF-2) 將計算該行上的字段數并減 2。

      [root@localhost tmp]# top -bn1 | grep load
      top - 19:31:25 up  1:47,  1 user,  load average: .00, .00, .00

      在瀏覽完 bash 腳本的基本部分之后,我們需要將這些命令保存到變量 MEMORY、DISK 和 CPU 中:

      MEMORY=$(free -m | awk 'NR==2{printf "%.2f%%\t\t", $3*100/$2 }')
      DISK=$(df -h | awk '$NF=="/"{printf "%s\t\t", $5}')
      CPU=$(top -bn1 | grep load | awk '{printf "%.2f%%\t\t\n", $(NF-2)}')

      我們需要腳本運行一段時間(比如,一個小時)。為了做到這一點,我們需要使用 while do 循環,每次循環后延遲 x 秒(取決于您的測試):

      end=$((SECONDS+3600))
      while [ $SECONDS -lt $end ]; do
      echo "$MEMORY$DISK$CPU"
      sleep 5
      done

      為了在一定時間內運行一次循環,我們可以定義一個變量 $end,它從 bash 腳本開始的時間開始計算當前的秒數,因此是 SECONDS,并在當前秒數上加上一個數字。所以一個小時就是 3600 秒。

      上述代碼片段的第二行指出,只要$SECONDS(當前秒數)小于 $SECONDS+3600,while 循環就會繼續執行。因此,我們定義了循環的開始時間和結束時間,以及將每個循環暫停 5 秒的睡眠時間。循環內部是每 5 秒將那三個變量分配一次新值,以及將輸出三個資源使用情況的 echo "$MEMORY$DISK$CPU"。

      完整代碼如下:

      #! /bin/bash
      printf "Memory\t\tDisk\t\tCPU\n"
      end=$((SECONDS+3600))
      while [ $SECONDS -lt $end ]; do
      MEMORY=$(free -m | awk 'NR==2{printf "%.2f%%\t\t", $3*100/$2 }')
      DISK=$(df -h | awk '$NF=="/"{printf "%s\t\t", $5}')
      CPU=$(top -bn1 | grep load | awk '{printf "%.2f%%\t\t\n", $(NF-2)}')
      echo "$MEMORY$DISK$CPU"
      sleep 5
      done

      上面的代碼將輸出以下內容:

      [root@localhost tmp]# ./stats.sh
      Memory Disk CPU
      9.34% 7% 0.00%
      9.34% 7% 0.00%
      9.34% 7% 0.00%
      9.34% 7% 0.00%
      ^C[root@localhost tmp]#

      您始終可以將數據輸出到日志文件:

      [root@localhost tmp]# ./stats.sh >> log.txt

      Stress 測試

      由于機器上幾乎沒有任何負載,我們可以使用 stress 來使 CPU 和內存負載一段時間。

      使用以下命令安裝(在 CentOS 上):

      [root@localhost tmp]# yum install stress
      Failed to set locale, defaulting to C
      Loaded plugins: fastestmirror
      Determining fastest mirrors
      epel/metalink                                                               | 4.2 kB     00:00     
       * base: ba.mirror.garr.it
       * epel: ftp.riken.jp
       * extras: centos.fastbull.org
       * updates: centos.fastbull.org
      base                                                                        | 3.7 kB     00:00     
      epel                                                                        | 4.3 kB     00:00     
      epel/primary_db                                                             | 5.9 MB     00:37     
      extras                                                                      | 3.4 kB     00:00     
      extras/primary_db                                                           |  37 kB     00:00     
      updates                                                                     | 3.4 kB     00:00     
      updates/primary_db                                                          | 5.2 MB     00:30     
      Setting up Install Process
      Resolving Dependencies
      --> Running transaction check
      ---> Package stress.x86_64 :1.0.4-4.el6 will be installed
      --> Finished Dependency Resolution
      Dependencies Resolved
      ===================================================================================================
       Package               Arch                  Version                     Repository           Size
      ===================================================================================================
      Installing:
       stress                x86_64                1.0.4-4.el6                 epel                 36 k
      Transaction Summary
      ===================================================================================================
      Install       1 Package(s)
      Total download size: 36 k
      Installed size: 89 k
      Is this ok [y/N]: y
      Downloading Packages:
      stress-1.0.4-4.el6.x86_64.rpm                                               |  36 kB     00:01     
      Running rpm_check_debug
      Running Transaction Test
      Transaction Test Succeeded
      Running Transaction
        Installing : stress-1.0.4-4.el6.x86_64                                                       1/1 
        Verifying  : stress-1.0.4-4.el6.x86_64                                                       1/1 
      Installed:
        stress.x86_64 :1.0.4-4.el6                                                                      
      Complete!

      現在我們可以使用命令 stress 來負載我們的機器。例如,通過指定兩個 CPU 密集型進程、一個 I/O 密集型進程一個內存分配器進程,對系統施加 4 個平均負載,如下所示。以下壓力測試將運行 1 小時。

      [root@localhost tmp]# stress -c 2 -i 1 -m 1 --vm-bytes 128M -t 3600s
      stress: info: [1574] dispatching hogs: 2 cpu, 1 io, 1 vm,  hdd
      stress: info: [1574] successful run completed in 3600s
      [root@localhost tmp]# ./stats.sh 
      Memory  Disk  CPU
      20.48%  7%  1.21%  
      20.48%  7%  1.02%  
      20.48%  7%  0.94%  
      21.89%  7%  1.18%  
      20.68%  7%  1.41%  
      22.09%  7%  1.62%  
      24.10%  7%  1.81%  
      24.90%  7%  1.98%  
      32.93%  7%  2.14%  
      30.32%  7%  2.29%  
      20.58%  7%  2.63%  
      27.91%  7%  2.82%  
      20.48%  7%  2.59%  
      20.48%  7%  2.38%  
      20.48%  7%  2.19%  
      20.48%  7%  2.02%  
      20.48%  7%  1.86%

      關于如何為所有系統管理員創建一個非常容易且有用的 bash 腳本的教程到此結束。


      END

      標簽:腳本 命令 內存
      PostgreSQL并行框架分析
      ? 上一篇 2022-05-06
      如何優雅地升級Kubernetes集群的Docker和Containerd版本
      下一篇 ? 2022-05-06
      發表評論 共有條評論
      用戶名: 密碼:
      驗證碼: 匿名發表
      • Spring云應用的優雅下線和灰度發布
        2閱讀 0條評論 個贊
        前言在生產環境中,如何保證在服務升級的時候,不影響用戶的體驗,這個是一個非常重要的問題。如果在我們升級服務的時候,會造成一段時間內的服務不可用,這就是不夠優雅的。那什么是優雅的呢?主要就是指在服務升級……
      • 在Linux中檢查磁盤空間的12個有用的df命令
        1閱讀 0條評論 個贊
        1.檢查文件系統磁盤空間使用情況這df命令顯示文件系統上的設備名稱、總塊數、總磁盤空間、已用磁盤空間、可用磁盤空間和掛載點信息。[root@local~]#dfFilesystem1K-bloc……
      • 數據治理 區分系統、機制、流程的概念很重要
        0閱讀 0條評論 個贊
        以下文章來源于公眾號-大魚的數據人生,作者討厭的大魚先生我們剛接觸數據的時候,從事的大多是具體的數據管理活動,無論是數據的采集、開發和開放,或是元數據管理、數據質量管理或是數據安全管理等等,但當你想更……
      • 記得網上一個K8s Ingress訪問故障排除 最后卻不是帖子的鍋
        0閱讀 0條評論 個贊
        具體現象應用遷移至我們的PaaS平臺后會出現偶發性的502問題,錯誤見圖片:相比于程序的請求量,錯誤肯定是比較少的,但是錯誤一直在發生,會影響調用方的代碼,需要檢查下問題原因。為啥我們只看到了POST……
      • Kubernetes網絡模型基本指南
        1閱讀 0條評論 個贊
        Kubernetes是為運行分布式集群而建立的,分布式系統的本質使得網絡成為Kubernetes的核心和必要組成部分,了解Kubernetes網絡模型可以使你能夠正確運行、監控和排查應用程序……
      • 內存數據庫如何利用內存?
        1閱讀 0條評論 個贊
        與以磁盤存儲為主的普通數據庫相比,內存數據庫的數據訪問速度可以高出幾個數量級,能大幅提高運算性能,更適合高并發、低延時的業務場景。不過,當前大部分內存數據庫仍然采用SQL模型,而SQL缺乏一些……
      • 如何在Linux下擴展XFS根分區
        2閱讀 0條評論 個贊
        在某些情況下,/分區在Linux中磁盤空間不足。即使壓縮和刪除舊的日志文件也無濟于事,因此在這種情況下,我們別無選擇,只能擴展/文件系統。在本文中,我們將演示如何在Linux系統中擴展不……
      • 納尼?數據也是立法的嗎?
        1閱讀 0條評論 個贊
        編輯:彭文華來源:大數據架構師(ID:bigdata_arch)彭友們好,我是老彭。最近忙瘋了,天天給客戶寫方案,都沒時間寫文章了。趁著五一假期,跟彭友們嘮嘮新鮮事兒。今天這個,真的是顛覆我的認知,……
      • MYSQL VS POLARDB唯一索引死鎖及應用設計
        1閱讀 0條評論 個贊
        #issue68021MySQLuniquecheck問題-知乎(zhihu.com)事情的開始是這樣的,最近和阿里云密切聯系,也成為他們的大客戶,(我們當然是大客戶,BIGBIG……
      • 《網絡端口大全》運維必備 就看這個吧
        1閱讀 0條評論 個贊
        老楊工作8年有余,經??吹胶芏嗑W絡工程師的簡歷里寫著熟悉“tcp/ip,http等協議”,我也每次都遵從本心的問了他們:那你可以說說你理解中的端口嗎?很多人都能答得上來一部分,但很多人都難答的比較……
      • 教你如何在Linux中生成復雜的密碼 并檢查密碼強度
        0閱讀 0條評論 個贊
        在本教程中,我們將討論如何生成復雜密碼并且檢查密碼強度。生成復雜的密碼強密碼應由字母、數字和符號的混合組成。第二個要求是不要使用已知單詞、出生日期或姓名,因為很容易受到字典攻擊。密碼應該包含多少個字符……
      • 碼頭工人搭建彈性搜索集群教程
        0閱讀 0條評論 個贊
        寫在前面:為什么要用ElasticSearch?我們的應用經常需要添加檢索功能,開源的ElasticSearch是目前全文檢索引擎的首選。它可以快速的存儲、搜索和分析海量數據。ElasticSear……
      • Python的八個實用“無代碼”特性
        1閱讀 0條評論 個贊
        注:在命令行中使用Python時,“-m”選項參數可以實現非常強大的功能??梢哉f,善用“-m”參數,這是一個優秀的Python技術人的必備技能。曾發過一篇文章《Python中-m的典型用……
      • 本文將帶您了解kubernetes的架構和組件!
        1閱讀 0條評論 個贊
        kubernetes架構目標kubernetes是生產級的,用于跨主機部署,擴展,管理和組合應用程序容器的基礎設施。kubernetes不僅僅是“容器編排”,他更加主要的解決方向是消除協調計算資源,網……
      • 卡夫卡3.0新功能全暴露 好香??!
        1閱讀 0條評論 個贊
        以下文章來源于云加社區,作者屈志平導語|kafka3.0的版本已經試推行去zk的kafka架構了,如果去掉了zk,那么在kafka新的版本當中使用什么技術來代替了zk的位置呢,接下來我們一起來一探究竟……
      • 緊急情況下數據庫表被鎖 抓瞎?
        4閱讀 0條評論 個贊
        以下文章來源于公眾號-程序新視界,作者二師兄在程序員的職業生涯中,總會遇到數據庫表被鎖的情況,前些天就又撞見一次。由于業務突發需求,各個部門都在批量操作、導出數據,而數據庫又未做讀寫分離,結果就是:數……
      • Java“年度加密漏洞”修復 網友:更多堅持Java 8的理由
        9閱讀 0條評論 個贊
        文|Travis出品|OSC開源社區(ID:oschina2013)甲骨文于昨日推送了安全更新修復了一個漏洞,該漏洞允許攻擊者偽造某些種類的SSL證書和握手、雙因素認證信息,以及由一系列廣……
      • Linux基礎總結 這個就夠了!
        1閱讀 0條評論 個贊
        1.Linux安裝因為圖太多了,轉載一篇從虛擬機vmware配置到centos7詳細安裝教程https://www.cnblogs.com/wcwen1990/p/7630545.html2.lin……
      • 運維常用的34個Linux Shell腳本 對你一定有幫助!
        1閱讀 0條評論 個贊
        作為一名Linux工程師,會寫好的腳本不僅能提高工作效率,還能有更多的時間做自己的事。最近在網上沖浪的時候,也注意收集一些大佬寫過的腳本,匯總整理一下,歡迎收藏,與君共勉?。?)用戶猜數字#!/b……
      • 代碼規范設計模式的落地之路
        2閱讀 0條評論 個贊
        —1—前言與同事開了一個分享會,筆者分享了一些了代碼設計模式相關的內容。以及復盤了一下項目中有些復雜的業務場景,為什么沒有很好的應用到設計模式。業務雖然肯定保密的,但是拋開項目,業務層面,縱觀回顧了一……
      最近發布資訊
      更多
      本地特级毛片,老师脱裙子让我看内裤,人妻av乱片aV出轨avApp
      <noframes id="llnpn"><pre id="llnpn"><strike id="llnpn"></strike></pre><address id="llnpn"><strike id="llnpn"><span id="llnpn"></span></strike></address>

      <pre id="llnpn"></pre>

        <address id="llnpn"><strike id="llnpn"><span id="llnpn"></span></strike></address>

        <noframes id="llnpn">

          <noframes id="llnpn"><pre id="llnpn"></pre>