chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

dyquk4xk2p3d ? 來(lái)源:馬哥Linux運(yùn)維 ? 2023-04-10 11:50 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

監(jiān)控我們的環(huán)境對(duì)于服務(wù)器運(yùn)維來(lái)說(shuō)至關(guān)重要,尤其是在部署新的應(yīng)用程序時(shí)。如今,公司每天都使用開(kāi)源解決方案來(lái)監(jiān)控系統(tǒng)資源。但是,當(dāng)出于測(cè)試的目的來(lái)監(jiān)控一定時(shí)間時(shí),bash 腳本會(huì)派上用場(chǎng)。

在本教程中,我們將編寫(xiě)一個(gè) bash shell 腳本,它將輸出一個(gè)三列表,來(lái)顯示我們機(jī)器上的內(nèi)存、磁盤(pán)和 CPU 的百分比。

讓我們開(kāi)始吧!

該腳本基本上由三個(gè)主要部分組成:

監(jiān)控內(nèi)存

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

free -m是用于顯示已使用和空閑內(nèi)存的命令,輸出如下:

[root@localhosttmp]#free-m
totalusedfreesharedbufferscached
Mem:9969290401131
-/+buffers/cache:49947
Swap:158301583

但是,我們需要從上面的輸出中獲取第二行的總內(nèi)存和已用內(nèi)存。我們可以使用 AWK 來(lái)從給定輸出中提取數(shù)據(jù)。

AWK 是一種用于文本處理和數(shù)據(jù)提取的編程語(yǔ)言。它是大多數(shù) UNIX 系統(tǒng)的標(biāo)準(zhǔn)功能。awk ‘NR==2’從第二行提取數(shù)據(jù)。$3和$2分別充當(dāng)已用量和總量。

監(jiān)控磁盤(pán)

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

第二個(gè)命令輸出使用的磁盤(pán)百分比。df -h輸出與磁盤(pán)使用情況和分區(qū)相關(guān)的數(shù)據(jù)。

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

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

監(jiān)控 CPU

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

top -bn1命令將只執(zhí)行一次top命令(n1= 一次迭代),當(dāng)我們想在 bash 腳本中使用top或?qū)⑵鋽?shù)據(jù)輸出到文件時(shí)使用可以使用-b選項(xiàng)。

grep load將輸出包含字符串load的行。$(NF-2)將計(jì)算該行上的字段數(shù)并減 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)}')

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

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

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

上述代碼片段的第二行指出,只要$SECONDS(當(dāng)前秒數(shù))小于$SECONDS+3600,while循環(huán)就會(huì)繼續(xù)執(zhí)行。因此,我們定義了循環(huán)的開(kāi)始時(shí)間和結(jié)束時(shí)間,以及將每個(gè)循環(huán)暫停 5 秒的睡眠時(shí)間。循環(huán)內(nèi)部是每 5 秒將那三個(gè)變量分配一次新值,以及將輸出三個(gè)資源使用情況的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

上面的代碼將輸出以下內(nèi)容:

[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]#

您始終可以將數(shù)據(jù)輸出到日志文件:

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

Stress 測(cè)試

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

由于機(jī)器上幾乎沒(méi)有任何負(fù)載,我們可以使用stress來(lái)使 CPU 和內(nèi)存負(fù)載一段時(shí)間。

使用以下命令安裝(在 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!

現(xiàn)在我們可以使用命令 stress 來(lái)負(fù)載我們的機(jī)器。例如,通過(guò)指定兩個(gè) CPU 密集型進(jìn)程、一個(gè) I/O 密集型進(jìn)程和一個(gè)內(nèi)存分配器進(jìn)程,對(duì)系統(tǒng)施加 4 個(gè)平均負(fù)載,如下所示。以下壓力測(cè)試將運(yùn)行 1 小時(shí)。

[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%

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

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11509

    瀏覽量

    213687
  • 開(kāi)源
    +關(guān)注

    關(guān)注

    3

    文章

    3676

    瀏覽量

    43806
  • Shell
    +關(guān)注

    關(guān)注

    1

    文章

    372

    瀏覽量

    24202
  • 腳本
    +關(guān)注

    關(guān)注

    1

    文章

    398

    瀏覽量

    28451
  • Bash
    +關(guān)注

    關(guān)注

    0

    文章

    57

    瀏覽量

    10463

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

文章出處:【微信號(hào):良許Linux,微信公眾號(hào):良許Linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

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

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

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

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

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

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

    Linux shell腳本分享

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

    Linux_Bash腳本編程大全

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

    linux shell 腳本入門(mén)

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

    Linux系統(tǒng)命令及shell腳本實(shí)踐指南

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

    Linux命令行與shell腳本編寫(xiě)

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

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

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

    Linux Shell腳本經(jīng)典案例分享

    ? 作為一名 Linux 運(yùn)維工程師,會(huì)寫(xiě)好的腳本不僅能提高工作效率,還能有更多的時(shí)間做自己的事。最近在網(wǎng)上沖浪的時(shí)候,發(fā)現(xiàn)大家對(duì)Shell腳本都有“心結(jié)”,要么覺(jué)得自己寫(xiě)出來(lái)不好
    發(fā)表于 06-16 14:03 ?820次閱讀
    <b class='flag-5'>Linux</b> <b class='flag-5'>Shell</b><b class='flag-5'>腳本</b>經(jīng)典案例分享

    BASH shell腳本篇—條件命令

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

    BASH shell腳本篇—函數(shù)

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

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

    Bash Shell腳本中,可以使用多種方法來(lái)對(duì)文件進(jìn)行操作,包括讀取文件或?qū)懭胛募?/div>
    的頭像 發(fā)表于 10-23 16:51 ?937次閱讀

    Shell腳本檢查工具ShellCheck介紹

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

    Linux從零到精通:最簡(jiǎn)單的Shell腳本入門(mén)教程

    case語(yǔ)句 shell變量數(shù)組 shell腳本前言 |為什么學(xué)習(xí)shell編程 Shell腳本
    的頭像 發(fā)表于 12-05 09:56 ?1547次閱讀
    <b class='flag-5'>Linux</b>從零到精通:最簡(jiǎn)單的<b class='flag-5'>Shell</b><b class='flag-5'>腳本</b>入門(mén)教程