利用Bash腳本監(jiān)控Linux服務器的內(nèi)存使用情況的相關資料
文章主要給大家介紹了關于如何利用Bash腳本監(jiān)控Linux的內(nèi)存使用情況的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用linux具有一定的參考學習價值,需要的朋友們...
文章主要給大家介紹了關于如何利用Bash腳本監(jiān)控Linux的內(nèi)存使用情況的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用linux具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧。
前言
目前市場上有許多開源監(jiān)控工具可用于監(jiān)控 Linux 系統(tǒng)的性能。當系統(tǒng)達到指定的閾值限制時,它可以發(fā)送電子郵件警報。它可以監(jiān)視 CPU 利用率、內(nèi)存利用率、交換利用率、磁盤空間利用率等所有內(nèi)容。
如果你只有很少的系統(tǒng)并且想要監(jiān)視它們,那么編寫一個小的 shell 腳本可以使你的任務變得非常簡單。
在本教程中,我們添加了兩個 shell 腳本來監(jiān)視 Linux 系統(tǒng)上的內(nèi)存利用率。當系統(tǒng)達到給定閾值時,它將給特定電子郵件地址發(fā)郵件。
方法-1:用 Linux Bash 腳本監(jiān)視內(nèi)存利用率并發(fā)送電子郵件
如果只想在系統(tǒng)達到給定閾值時通過郵件獲取當前內(nèi)存利用率百分比,請使用以下腳本。
這是個非常簡單直接的單行腳本。在大多數(shù)情況下,我更喜歡使用這種方法。
當你的系統(tǒng)達到內(nèi)存利用率的 80% 時,它將觸發(fā)一封電子郵件。
*/5 * * * * /usr/bin/free | awk '/Mem/{printf("RAM Usage: %.2f%\n"), $3/$2*100}' | awk '{print $3}' | awk '{ if($1 > 80) print $0;}' | mail -s "High Memory Alert" 2daygeek@gmail.com
注意:你需要更改電子郵件地址而不是使用我們的電子郵件地址。此外,你可以根據(jù)你的要求更改內(nèi)存利用率閾值。
輸出:你將收到類似下面的電子郵件提醒。
High Memory Alert: 80.40%
我們過去添加了許多有用的 shell 腳本。如果要查看這些內(nèi)容,請導航至以下鏈接。
* 如何使用 shell 腳本自動執(zhí)行日?;顒??
方法-2:用 Linux Bash 腳本監(jiān)視內(nèi)存利用率并發(fā)送電子郵件
如果要在郵件警報中獲取有關內(nèi)存利用率的更多信息。使用以下腳本,其中包括基于 top 命令和 ps 命令的最高內(nèi)存利用率和進程詳細信息。
這將立即讓你了解系統(tǒng)的運行情況。
當你的系統(tǒng)達到內(nèi)存利用率的 “80%” 時,它將觸發(fā)一封電子郵件。
注意:你需要更改電子郵件地址而不是使用我們的電子郵件地址。此外,你可以根據(jù)你的要求更改內(nèi)存利用率閾值。
# vi /opt/scripts/memory-alert.sh
#!/bin/sh
ramusage=$(free | awk '/Mem/{printf("RAM Usage: %.2f\n"), $3/$2*100}'| awk '{print $3}')
if [ "$ramusage" > 20 ]; then
SUBJECT="ATTENTION: Memory Utilization is High on $(hostname) at $(date)"
MESSAGE="/tmp/Mail.out"
TO="2daygeek@gmail.com"
echo "Memory Current Usage is: $ramusage%" >> $MESSAGE
echo "" >> $MESSAGE
echo "------------------------------------------------------------------" >> $MESSAGE
echo "Top Memory Consuming Process Using top command" >> $MESSAGE
echo "------------------------------------------------------------------" >> $MESSAGE
echo "$(top -b -o +%MEM | head -n 20)" >> $MESSAGE
echo "" >> $MESSAGE
echo "------------------------------------------------------------------" >> $MESSAGE
echo "Top Memory Consuming Process Using ps command" >> $MESSAGE
echo "------------------------------------------------------------------" >> $MESSAGE
echo "$(ps -eo pid,ppid,%mem,%Memory,cmd --sort=-%mem | head)" >> $MESSAGE
mail -s "$SUBJECT" "$TO" < $MESSAGE
rm /tmp/Mail.out
fi
最后添加一個 cron 任務 來自動執(zhí)行此操作。它將每 5 分鐘運行一次。
# crontab -e
*/5 * * * * /bin/bash /opt/scripts/memory-alert.sh
注意:由于腳本計劃每 5 分鐘運行一次,因此你將在最多 5 分鐘后收到電子郵件提醒(但不是 5 分鐘,取決于具體時間)。
比如說,如果你的系統(tǒng)達到 8.25 的給定限制,那么你將在 5 分鐘內(nèi)收到電子郵件警報。希望現(xiàn)在說清楚了。
輸出:你將收到類似下面的電子郵件提醒。
Memory Current Usage is: 80.71%
+------------------------------------------------------------------+
Top Memory Consuming Process Using top command
+------------------------------------------------------------------+
top - 12:00:58 up 5 days, 9:03, 1 user, load average: 1.82, 2.60, 2.83
Tasks: 314 total, 1 running, 313 sleeping, 0 stopped, 0 zombie
%Cpu0 : 8.3 us, 12.5 sy, 0.0 ni, 75.0 id, 0.0 wa, 0.0 hi, 4.2 si, 0.0 st
%Cpu1 : 13.6 us, 4.5 sy, 0.0 ni, 81.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu2 : 21.7 us, 21.7 sy, 0.0 ni, 56.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu3 : 13.6 us, 9.1 sy, 0.0 ni, 77.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu4 : 17.4 us, 8.7 sy, 0.0 ni, 73.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu5 : 20.8 us, 4.2 sy, 0.0 ni, 70.8 id, 0.0 wa, 0.0 hi, 4.2 si, 0.0 st
%Cpu6 : 9.1 us, 0.0 sy, 0.0 ni, 90.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu7 : 17.4 us, 4.3 sy, 0.0 ni, 78.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 16248588 total, 5015964 free, 6453404 used, 4779220 buff/cache
KiB Swap: 17873388 total, 16928620 free, 944768 used. 6423008 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
17163 daygeek 20 2033204 487736 282888 S 10.0 3.0 8:26.07 /usr/lib/firefox/firefox -contentproc -childID 15 -isForBrowser -prefsLen 9408 -prefMapSize 184979 -parentBuildID 20190521202118 -greomni /u+
1121 daygeek 20 4191388 419180 100552 S 5.0 2.6 126:02.84 /usr/bin/gnome-shell
1902 daygeek 20 1701644 327216 82536 S 20.0 2.0 153:27.92 /opt/google/chrome/chrome
2969 daygeek 20 1051116 324656 92388 S 15.0 2.0 149:38.09 /opt/google/chrome/chrome --type=renderer --field-trial-handle=10346122902703263820,11905758137655502112,131072 --service-pipe-token=1339861+
1068 daygeek 20 1104856 309552 278072 S 5.0 1.9 143:47.42 /usr/lib/Xorg vt2 -displayfd 3 -auth /run/user/1000/gdm/Xauthority -nolisten tcp -background none -noreset -keeptty -verbose 3
27246 daygeek 20 907344 265600 108276 S 30.0 1.6 10:42.80 /opt/google/chrome/chrome --type=renderer --field-trial-handle=10346122902703263820,11905758137655502112,131072 --service-pipe-token=8587368+
+------------------------------------------------------------------+
Top Memory Consuming Process Using ps command
+------------------------------------------------------------------+
PID PPID %MEM %CPU CMD
8223 1 6.4 6.8 /usr/lib/firefox/firefox --new-window
13948 1121 6.3 1.2 /usr/bin/../lib/notepadqq/notepadqq-bin
8671 8223 4.4 7.5 /usr/lib/firefox/firefox -contentproc -childID 5 -isForBrowser -prefsLen 6999 -prefMapSize 184979 -parentBuildID 20190521202118 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 8223 true tab
17163 8223 3.0 0.6 /usr/lib/firefox/firefox -contentproc -childID 15 -isForBrowser -prefsLen 9408 -prefMapSize 184979 -parentBuildID 20190521202118 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 8223 true tab
1121 1078 2.5 1.6 /usr/bin/gnome-shell
17937 8223 2.5 0.8 /usr/lib/firefox/firefox -contentproc -childID 16 -isForBrowser -prefsLen 9410 -prefMapSize 184979 -parentBuildID 20190521202118 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 8223 true tab
8499 8223 2.2 0.6 /usr/lib/firefox/firefox -contentproc -childID 4 -isForBrowser -prefsLen 6635 -prefMapSize 184979 -parentBuildID 20190521202118 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 8223 true tab
8306 8223 2.2 0.8 /usr/lib/firefox/firefox -contentproc -childID 1 -isForBrowser -prefsLen 1 -prefMapSize 184979 -parentBuildID 20190521202118 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 8223 true tab
9198 8223 2.1 0.6 /usr/lib/firefox/firefox -contentproc -childID 7 -isForBrowser -prefsLen 8604 -prefMapSize 184979 -parentBuildID 20190521202118 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 8223 true tab
via: https://www.2daygeek.com/linux-bash-script-to-monitor-memory-utilization-usage-and-send-email/
作者: Magesh Maruthamuthu 選題: lujun9972 譯者: wxy 校對: wxy
總結
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,
- 微軟開始擁抱開源社區(qū) exFAT文件系統(tǒng)向Linux開源
- Linux系統(tǒng)如何安裝配置Sendmail?Linux系統(tǒng)安裝配置Send
- Linux下使用ps命令來查看oracle數(shù)據(jù)庫相關進程的操作
- 阿里云服務器宕一次機 要賠償多少錢?
- Windows2000/2003/2008服務器IIS導入服務器證書的方法
- windows服務器配置iis6,iis7.5支持解析.json格式文件
- Win2003服務器防SQL注入的D盾、IIS防火墻的測試情況
- windows服務器下注冊服務的命令小結的相關資料
- 遠程管理Windows服務器上的IIS服務的方法教程
- 基于windows服務器下wamp多域名的配置操作方法
微軟開始擁抱開源社區(qū) exFAT文件系統(tǒng)向Linux開源
微軟真的在擁抱開源社區(qū),這一點從他們的實際行動就可以看出來了,而微軟的最新動作就是直接公開了注冊了專利的exFAT文件系統(tǒng)細節(jié),并且還宣布將會把這個文件系統(tǒng)開源給Linux內(nèi)核。...
Linux系統(tǒng)如何安裝配置Sendmail?Linux系統(tǒng)安裝配置Sendmail教程
Linux系統(tǒng)如何安裝配置Sendmail?Sendmail是目前在網(wǎng)絡上最受歡迎的一種E-mail服務器,在互聯(lián)網(wǎng)上是廣受好評,很多企業(yè)用戶都在使用。那么,Linux系統(tǒng)如何安裝配置Sendmail呢?下面,我們就一起往下看看Linux系統(tǒng)安裝配置Sendmail的方法。...
Linux下使用ps命令來查看oracle數(shù)據(jù)庫相關進程的操作步驟
ps命令的操作是很多的小伙伴在管理進程的操作的時候遇到的問題,對于Linux系統(tǒng)中今天小編就來跟大家分享一下詳解Oracle相關進程在電腦中使用ps命令查看的操作步驟。...
阿里云服務器宕一次機 要賠償多少錢?
3月3日凌晨,阿里云出現(xiàn)宕機故障。受宕機故障影響,華北不少互聯(lián)網(wǎng)公司APP、網(wǎng)站紛紛癱瘓,一大波程序員、運營和運維不得不從被窩里爬起來干活。...
Windows2000/2003/2008服務器IIS導入服務器證書的方法(IIS5、IIS6、IIS7)
文章主要介紹了Windows 2000、Windows2003、Windows 2008服務器???????IIS導入服務器證書的方法(IIS5、IIS6、IIS7),需要的朋友可以參考下。...
windows服務器配置iis6,iis7.5支持解析.json格式文件的方法
文章主要介紹了配置iis6,iis7.5支持解析.json格式文件的方法,需要的朋友可以參考下配置iis支持.json格式的文件發(fā)現(xiàn)要讓IIS支持json文件并不是單純的添加mime這么簡單啊,以下是設置方法:...
Win2003服務器防SQL注入的D盾、IIS防火墻的測試情況
D盾_IIS防火墻,目前只支持Win2003服務器,前陣子看見官方博客說D盾新版將近期推出,相信功能會更強大,這邊分享一下之前的SQL注入防御的測試情況。D盾_IIS防火墻注入防御策略,...
windows服務器下注冊服務的命令小結的相關資料
文章主要介紹了window下注冊服務的命令小結的相關資料,需要的朋友可以參考下。1. 描述: SC 是用于與服務控制管理器通信的命令行程序 。用法: sc [command] [servic...
遠程管理Windows服務器上的IIS服務的方法教程
日常管理Windows服務器上的IIS時一般都是先遠程連接服務器桌面然后再直接操作IIS,雖然不是很麻煩,但也是每次都需要輸入服務器用戶名與密碼,那么今天就為大家介紹一種方法可以在本地的IIS上直接管理服務器上的IIS,不需要每次都進入服務器進行管理了。...
基于windows服務器下wamp多域名的配置操作方法
本文將詳細介紹windows下wamp多域名的配置方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧修改hosts文件hosts文件的位置:系統(tǒng)盤→“windows&rd...