在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何用10行bash shell腳本監(jiān)控Linux

dyquk4xk2p3d ? 來源:馬哥Linux運維 ? 2023-04-10 11:50 ? 次閱讀

監(jiān)控我們的環(huán)境對于服務器運維來說至關重要,尤其是在部署新的應用程序時。如今,公司每天都使用開源解決方案來監(jiān)控系統資源。但是,當出于測試的目的來監(jiān)控一定時間時,bash 腳本會派上用場。

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

讓我們開始吧!

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

監(jiān)控內存

free-m|awk'NR==2{printf"%.2f%%		",$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分別充當已用量和總量。

監(jiān)控磁盤

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

第二個命令輸出使用的磁盤百分比。df -h輸出與磁盤使用情況和分區(qū)相關的數據。

[root@localhosttmp]#df-h
FilesystemSizeUsedAvailUse%Mountedon
/dev/mapper/VolGroup-lv_root14G814M12G7%/
tmpfs499M0499M0%/dev/shm
/dev/sda1485M32M428M7%/boot

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

監(jiān)控 CPU

top-bn1|grepload|awk'{printf"%.2f%%		
",$(NF-2)}'

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

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

[root@localhosttmp]#top-bn1|grepload
top-19:31:25up1:47,1user,loadaverage:0.00,0.00,0.00

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

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

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

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

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

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

完整代碼如下:

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

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

[root@localhosttmp]#./stats.sh
MemoryDiskCPU
9.34%7%0.00%
9.34%7%0.00%
9.34%7%0.00%
9.34%7%0.00%
^C[root@localhosttmp]#

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

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

Stress 測試

d39eb78c-d683-11ed-bfe3-dac502259ad0.png

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

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

[root@localhosttmp]#yuminstallstress
Failedtosetlocale,defaultingtoC
Loadedplugins:fastestmirror
Determiningfastestmirrors
epel/metalink|4.2kB00:00
*base:ba.mirror.garr.it
*epel:ftp.riken.jp
*extras:centos.fastbull.org
*updates:centos.fastbull.org
base|3.7kB00:00
epel|4.3kB00:00
epel/primary_db|5.9MB00:37
extras|3.4kB00:00
extras/primary_db|37kB00:00
updates|3.4kB00:00
updates/primary_db|5.2MB00:30
SettingupInstallProcess
ResolvingDependencies
-->Runningtransactioncheck
--->Packagestress.x86_640:1.0.4-4.el6willbeinstalled
-->FinishedDependencyResolution
DependenciesResolved
===================================================================================================
PackageArchVersionRepositorySize
===================================================================================================
Installing:
stressx86_641.0.4-4.el6epel36k
TransactionSummary
===================================================================================================
Install1Package(s)
Totaldownloadsize:36k
Installedsize:89k
Isthisok[y/N]:y
DownloadingPackages:
stress-1.0.4-4.el6.x86_64.rpm|36kB00:01
Runningrpm_check_debug
RunningTransactionTest
TransactionTestSucceeded
RunningTransaction
Installing:stress-1.0.4-4.el6.x86_641/1
Verifying:stress-1.0.4-4.el6.x86_641/1
Installed:
stress.x86_640:1.0.4-4.el6
Complete!

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

[root@localhosttmp]#stress-c2-i1-m1--vm-bytes128M-t3600s
stress:info:[1574]dispatchinghogs:2cpu,1io,1vm,0hdd
stress:info:[1574]successfulruncompletedin3600s
[root@localhosttmp]#./stats.sh
MemoryDiskCPU
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%

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

審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11324

    瀏覽量

    209938
  • 開源
    +關注

    關注

    3

    文章

    3374

    瀏覽量

    42598
  • Shell
    +關注

    關注

    1

    文章

    366

    瀏覽量

    23417
  • 腳本
    +關注

    關注

    1

    文章

    391

    瀏覽量

    14897
  • Bash
    +關注

    關注

    0

    文章

    57

    瀏覽量

    10189

原文標題:如何用 10 行 bash shell 腳本監(jiān)控 Linux?

文章出處:【微信號:良許Linux,微信公眾號:良許Linux】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    只需10行腳本就可監(jiān)控你的操作系統?

    今天浩道跟大家分享硬核shell實戰(zhàn)干貨,利用10shell腳本監(jiān)控你的
    發(fā)表于 11-14 09:18 ?396次閱讀

    如何在bash shell腳本中使用變量

    如果你使用編程語言編寫過程序,那么一定接觸過變量。而在 bash 腳本的編寫時,變量也是一個很重要的概念。今天我們分享一下如何在 bash 腳本中使用變量。
    發(fā)表于 12-02 16:32 ?2131次閱讀
    如何在<b class='flag-5'>bash</b> <b class='flag-5'>shell</b><b class='flag-5'>腳本</b>中使用變量

    Linux Shell腳本入門到實戰(zhàn)詳解

    Linux Shell腳本入門到實戰(zhàn)詳解
    發(fā)表于 02-17 15:03 ?648次閱讀

    Linux shell腳本分享

    今天浩道跟大家分享幾個Linux運維中常用到的shell腳本
    發(fā)表于 07-18 09:53 ?569次閱讀
    <b class='flag-5'>Linux</b> <b class='flag-5'>shell</b><b class='flag-5'>腳本</b>分享

    Linux_Bash腳本編程大全

    毫無疑問,UNIX/Linux 最重要的軟件之一就是shell,目前最流行的shell 被稱為Bash(Bourne Again Shell
    發(fā)表于 10-22 16:17 ?57次下載

    linux shell 腳本入門

    1. Linux 腳本編寫基礎 1.1 語法基本介紹 1.1.1 開頭 程序必須以下面的開始(必須方在文件的第一): #!/bin/sh 符號#!用來告訴系統它后面的參數是用來執(zhí)行
    發(fā)表于 11-07 15:44 ?11次下載

    Linux系統命令及shell腳本實踐指南

    Linux系統命令及shell腳本實踐指南資料下載。
    發(fā)表于 06-01 14:47 ?28次下載

    Linux命令行與shell腳本編寫

    Linux命令行與shell腳本編寫
    發(fā)表于 01-11 16:50 ?4次下載

    每個Linux用戶都需要知道的重要Bash shell變量

    Bash 是大多數 Linux 發(fā)行版的默認 shell。以下是每個 Linux 用戶都需要知道的一些重要的 Bash
    的頭像 發(fā)表于 02-13 09:22 ?947次閱讀

    Linux Shell腳本經典案例分享

    ? 作為一名 Linux 運維工程師,會寫好的腳本不僅能提高工作效率,還能有更多的時間做自己的事。最近在網上沖浪的時候,發(fā)現大家對Shell腳本都有“心結”,要么覺得自己寫出來不好
    發(fā)表于 06-16 14:03 ?661次閱讀
    <b class='flag-5'>Linux</b> <b class='flag-5'>Shell</b><b class='flag-5'>腳本</b>經典案例分享

    BASH shell腳本篇—條件命令

    這篇文章介紹下BASH shell中的條件相關的命令,包括:if, case, while, until, for, break, continue。
    的頭像 發(fā)表于 10-11 15:21 ?651次閱讀
    <b class='flag-5'>BASH</b> <b class='flag-5'>shell</b><b class='flag-5'>腳本</b>篇—條件命令

    BASH shell腳本篇—函數

    函數是代碼重用的最重要方式。Bash函數可以定義為一組命令,在bash腳本中多次調用。
    的頭像 發(fā)表于 10-20 16:31 ?1145次閱讀

    BASH shell腳本篇—文件處理介紹

    Bash Shell腳本中,可以使用多種方法來對文件進行操作,包括讀取文件或寫入文件。
    的頭像 發(fā)表于 10-23 16:51 ?641次閱讀

    Shell腳本檢查工具ShellCheck介紹

    ShellCheck是一個用于bash/sh shell腳本的靜態(tài)分析工具,可以輔助檢查腳本語法錯誤,給出建議增強腳本健壯性。
    的頭像 發(fā)表于 12-27 13:43 ?2219次閱讀
    <b class='flag-5'>Shell</b><b class='flag-5'>腳本</b>檢查工具ShellCheck介紹

    Linux從零到精通:最簡單的Shell腳本入門教程

    case語句 shell變量數組 shell腳本前言 |為什么學習shell編程 Shell腳本
    的頭像 發(fā)表于 12-05 09:56 ?565次閱讀
    <b class='flag-5'>Linux</b>從零到精通:最簡單的<b class='flag-5'>Shell</b><b class='flag-5'>腳本</b>入門教程
    主站蜘蛛池模板: 国语自产免费精品视频一区二区| 人人爱人人爽| 这里只有精品视频| 亚洲成人午夜影院| 久久久成人影院| 色婷婷在线视频观看| 免费在线不卡视频| 看5xxaaa免费毛片| 国产精品久久精品福利网站| 午夜影院免费入口| 成人拍拍视频| 国产欧美亚洲精品| 黄色福利视频网站| 麻豆三级视频| 欧美淫| 特级无码毛片免费视频尤物| 在线免费观看视频你懂的| 亚洲地址一地址二地址三| 永久毛片| 亚洲婷婷在线视频| 亚洲人成毛片线播放| 色视频在线看| 欧美在线视频二区| 国模啪啪一区二区三区| 精品亚洲欧美无人区乱码| 毛片大全在线| 丁香六月婷婷在线| 日韩在线影院| 理论在线视频| 久操视频在线| 狠狠插狠狠插| 99午夜高清在线视频在观看| 精品精品国产理论在线观看| 日本xxxxx69| 97爱sese| 日本在线不卡一区| 国产精品久久久久久久久久妇女| 国产精品香蕉在线一区| 四虎影片国产精品8848| 奇米影色777四色在线首页| 国产一级又色又爽又黄大片|