如何利用Bash脚本监控Linux的内存使用情况
前言
目前市场上有许多开源监控工具可用于监控Linux系统的性能。当系统达到指定的阈值限制时,它可以发送电子邮件警报。它可以监视CPU利用率、内存利用率、交换利用率、磁盘空间利用率等所有内容。
如果你只有很少的系统并且想要监视它们,那么编写一个小的shell脚本可以使你的任务变得非常简单。
在本教程中,我们添加了两个shell脚本来监视Linux系统上的内存利用率。当系统达到给定阈值时,它将给特定电子邮件地址发邮件。
方法-1:用LinuxBash脚本监视内存利用率并发送电子邮件
如果只想在系统达到给定阈值时通过邮件获取当前内存利用率百分比,请使用以下脚本。
这是个非常简单直接的单行脚本。在大多数情况下,我更喜欢使用这种方法。
当你的系统达到内存利用率的80%时,它将触发一封电子邮件。
*/5****/usr/bin/free|awk'/Mem/{printf("RAMUsage:%.2f%\n"),$3/$2*100}'|awk'{print$3}'|awk'{if($1>80)print$0;}'|mail-s"HighMemoryAlert"2daygeek@gmail.com
注意:你需要更改电子邮件地址而不是使用我们的电子邮件地址。此外,你可以根据你的要求更改内存利用率阈值。
输出:你将收到类似下面的电子邮件提醒。
HighMemoryAlert:80.40%
我们过去添加了许多有用的shell脚本。如果要查看这些内容,请导航至以下链接。
*如何使用shell脚本自动执行日常活动?
方法-2:用LinuxBash脚本监视内存利用率并发送电子邮件
如果要在邮件警报中获取有关内存利用率的更多信息。使用以下脚本,其中包括基于top命令和ps命令的最高内存利用率和进程详细信息。
这将立即让你了解系统的运行情况。
当你的系统达到内存利用率的“80%”时,它将触发一封电子邮件。
注意:你需要更改电子邮件地址而不是使用我们的电子邮件地址。此外,你可以根据你的要求更改内存利用率阈值。
#vi/opt/scripts/memory-alert.sh #!/bin/sh ramusage=$(free|awk'/Mem/{printf("RAMUsage:%.2f\n"),$3/$2*100}'|awk'{print$3}') if["$ramusage">20];then SUBJECT="ATTENTION:MemoryUtilizationisHighon$(hostname)at$(date)" MESSAGE="/tmp/Mail.out" TO="2daygeek@gmail.com" echo"MemoryCurrentUsageis:$ramusage%">>$MESSAGE echo"">>$MESSAGE echo"------------------------------------------------------------------">>$MESSAGE echo"TopMemoryConsumingProcessUsingtopcommand">>$MESSAGE echo"------------------------------------------------------------------">>$MESSAGE echo"$(top-b-o+%MEM|head-n20)">>$MESSAGE echo"">>$MESSAGE echo"------------------------------------------------------------------">>$MESSAGE echo"TopMemoryConsumingProcessUsingpscommand">>$MESSAGE echo"------------------------------------------------------------------">>$MESSAGE echo"$(ps-eopid,ppid,%mem,%Memory,cmd--sort=-%mem|head)">>$MESSAGE mail-s"$SUBJECT""$TO"<$MESSAGE rm/tmp/Mail.out fi
最后添加一个cron任务来自动执行此操作。它将每5分钟运行一次。
#crontab-e */5****/bin/bash/opt/scripts/memory-alert.sh
注意:由于脚本计划每5分钟运行一次,因此你将在最多5分钟后收到电子邮件提醒(但不是5分钟,取决于具体时间)。
比如说,如果你的系统达到8.25的给定限制,那么你将在5分钟内收到电子邮件警报。希望现在说清楚了。
输出:你将收到类似下面的电子邮件提醒。
MemoryCurrentUsageis:80.71% +------------------------------------------------------------------+ TopMemoryConsumingProcessUsingtopcommand +------------------------------------------------------------------+ top-12:00:58up5days,9:03,1user,loadaverage:1.82,2.60,2.83 Tasks:314total,1running,313sleeping,0stopped,0zombie %Cpu0:8.3us,12.5sy,0.0ni,75.0id,0.0wa,0.0hi,4.2si,0.0st %Cpu1:13.6us,4.5sy,0.0ni,81.8id,0.0wa,0.0hi,0.0si,0.0st %Cpu2:21.7us,21.7sy,0.0ni,56.5id,0.0wa,0.0hi,0.0si,0.0st %Cpu3:13.6us,9.1sy,0.0ni,77.3id,0.0wa,0.0hi,0.0si,0.0st %Cpu4:17.4us,8.7sy,0.0ni,73.9id,0.0wa,0.0hi,0.0si,0.0st %Cpu5:20.8us,4.2sy,0.0ni,70.8id,0.0wa,0.0hi,4.2si,0.0st %Cpu6:9.1us,0.0sy,0.0ni,90.9id,0.0wa,0.0hi,0.0si,0.0st %Cpu7:17.4us,4.3sy,0.0ni,78.3id,0.0wa,0.0hi,0.0si,0.0st KiBMem:16248588total,5015964free,6453404used,4779220buff/cache KiBSwap:17873388total,16928620free,944768used.6423008availMem PIDUSERPRNIVIRTRESSHRS%CPU%MEMTIME+COMMAND 17163daygeek202033204487736282888S10.03.08:26.07/usr/lib/firefox/firefox-contentproc-childID15-isForBrowser-prefsLen9408-prefMapSize184979-parentBuildID20190521202118-greomni/u+ 1121daygeek204191388419180100552S5.02.6126:02.84/usr/bin/gnome-shell 1902daygeek20170164432721682536S20.02.0153:27.92/opt/google/chrome/chrome 2969daygeek20105111632465692388S15.02.0149:38.09/opt/google/chrome/chrome--type=renderer--field-trial-handle=10346122902703263820,11905758137655502112,131072--service-pipe-token=1339861+ 1068daygeek201104856309552278072S5.01.9143:47.42/usr/lib/Xorgvt2-displayfd3-auth/run/user/1000/gdm/Xauthority-nolistentcp-backgroundnone-noreset-keeptty-verbose3 27246daygeek20907344265600108276S30.01.610:42.80/opt/google/chrome/chrome--type=renderer--field-trial-handle=10346122902703263820,11905758137655502112,131072--service-pipe-token=8587368+ +------------------------------------------------------------------+ TopMemoryConsumingProcessUsingpscommand +------------------------------------------------------------------+ PIDPPID%MEM%CPUCMD 822316.46.8/usr/lib/firefox/firefox--new-window 1394811216.31.2/usr/bin/../lib/notepadqq/notepadqq-bin 867182234.47.5/usr/lib/firefox/firefox-contentproc-childID5-isForBrowser-prefsLen6999-prefMapSize184979-parentBuildID20190521202118-greomni/usr/lib/firefox/omni.ja-appomni/usr/lib/firefox/browser/omni.ja-appdir/usr/lib/firefox/browser8223truetab 1716382233.00.6/usr/lib/firefox/firefox-contentproc-childID15-isForBrowser-prefsLen9408-prefMapSize184979-parentBuildID20190521202118-greomni/usr/lib/firefox/omni.ja-appomni/usr/lib/firefox/browser/omni.ja-appdir/usr/lib/firefox/browser8223truetab 112110782.51.6/usr/bin/gnome-shell 1793782232.50.8/usr/lib/firefox/firefox-contentproc-childID16-isForBrowser-prefsLen9410-prefMapSize184979-parentBuildID20190521202118-greomni/usr/lib/firefox/omni.ja-appomni/usr/lib/firefox/browser/omni.ja-appdir/usr/lib/firefox/browser8223truetab 849982232.20.6/usr/lib/firefox/firefox-contentproc-childID4-isForBrowser-prefsLen6635-prefMapSize184979-parentBuildID20190521202118-greomni/usr/lib/firefox/omni.ja-appomni/usr/lib/firefox/browser/omni.ja-appdir/usr/lib/firefox/browser8223truetab 830682232.20.8/usr/lib/firefox/firefox-contentproc-childID1-isForBrowser-prefsLen1-prefMapSize184979-parentBuildID20190521202118-greomni/usr/lib/firefox/omni.ja-appomni/usr/lib/firefox/browser/omni.ja-appdir/usr/lib/firefox/browser8223truetab 919882232.10.6/usr/lib/firefox/firefox-contentproc-childID7-isForBrowser-prefsLen8604-prefMapSize184979-parentBuildID20190521202118-greomni/usr/lib/firefox/omni.ja-appomni/usr/lib/firefox/browser/omni.ja-appdir/usr/lib/firefox/browser8223truetab
via:https://www.2daygeek.com/linux-bash-script-to-monitor-memory-utilization-usage-and-send-email/
作者:MageshMaruthamuthu选题:lujun9972译者:wxy校对:wxy
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对毛票票的支持。