小猿圈002 发表于 2019-6-26 17:03:53

小猿圈Linux开发之Bash脚本监控内存使用情况

刚开始学习Linux的时候,是不是觉得很难,不管是系统的安装,还是命令的熟练,都遇到了很多问题,这些也是大部分学习者遇到的,今天小猿圈Linux讲师就教你Bash脚本监控内存使用情况,方便你学习linux。https://upload-images.jianshu.io/upload_images/15397392-cd05ff38d2d0e6dc.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240


目前市场上有许多开源监控工具可用于监控Linux系统的性能。当系统达到指定的阈值限制时,它可以发送电子邮件警报。它可以监视CPU利用率、内存利用率、交换利用率、磁盘空间利用率等所有内容。如果你只有很少的系统并且想要监视它们,那么编写一个小的shell脚本可以使你的任务变得非常简单。在本教程中,我们添加了两个shell脚本来监视Linux系统上的内存利用率。当系统达到给定阈值时,它将给特定电子邮件地址发邮件。方法-1:用LinuxBash脚本监视内存利用率并发送电子邮件如果只想在系统达到给定阈值时通过邮件获取当前内存利用率百分比,请使用以下脚本。这是个非常简单直接的单行脚本。在大多数情况下,我更喜欢使用这种方法。当你的系统达到内存利用率的80%时,它将触发一封电子邮件。*/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注意:你需要更改电子邮件地址而不是使用我们的电子邮件地址。此外,你可以根据你的要求更改内存利用率阈值。输出:你将收到类似下面的电子邮件提醒。High Memory Alert: 80.40%我们过去添加了许多有用的shell脚本。如果要查看这些内容,请导航至以下链接。方法-2:用LinuxBash脚本监视内存利用率并发送电子邮件如果要在邮件警报中获取有关内存利用率的更多信息。使用以下脚本,其中包括基于top命令和ps命令的最高内存利用率和进程详细信息。这将立即让你了解系统的运行情况。当你的系统达到内存利用率的“80%”时,它将触发一封电子邮件。注意:你需要更改电子邮件地址而不是使用我们的电子邮件地址。此外,你可以根据你的要求更改内存利用率阈值。# vi /opt/scripts/memory-alert.sh#!/bin/shramusage=$(free | awk '/Mem/{printf("RAM Usage: %.2f\n"), $3/$2*100}'| awk '{print $3}')if [ "$ramusage" > 20 ]; thenSUBJECT="ATTENTION: Memory Utilization is High on $(hostname) at $(date)"MESSAGE="/tmp/Mail.out"TO="2daygeek@gmail.com"echo "Memory Current Usage is: $ramusage%" >> $MESSAGEecho "" >> $MESSAGEecho "------------------------------------------------------------------" >> $MESSAGEecho "Top Memory Consuming Process Using top command" >> $MESSAGEecho "------------------------------------------------------------------" >> $MESSAGEecho "$(top -b -o +%MEM | head -n 20)" >> $MESSAGEecho "" >> $MESSAGEecho "------------------------------------------------------------------" >> $MESSAGEecho "Top Memory Consuming Process Using ps command" >> $MESSAGEecho "------------------------------------------------------------------" >> $MESSAGEecho "$(ps -eo pid,ppid,%mem,%Memory,cmd --sort=-%mem | head)" >> $MESSAGEmail -s "$SUBJECT" "$TO" < $MESSAGErm /tmp/Mail.outfi最后添加一个cron任务来自动执行此操作。它将每5分钟运行一次。# crontab -e*/5 * * * * /bin/bash /opt/scripts/memory-alert.sh注意:由于脚本计划每5分钟运行一次,因此你将在最多5分钟后收到电子邮件提醒(但不是5分钟,取决于具体时间)。比如说,如果你的系统达到8.25的给定限制,那么你将在5分钟内收到电子邮件警报。希望现在说清楚了。输出:你将收到类似下面的电子邮件提醒。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.83Tasks: 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 stKiB Mem : 16248588 total,5015964 free,6453404 used,4779220 buff/cacheKiB Swap: 17873388 total, 16928620 free,944768 used.6423008 avail MemPID USER      PRNI    VIRT    RES    SHR S%CPU%MEM    TIME+ COMMAND17163 daygeek20    2033204 487736 282888 S10.03.08:26.07 /usr/lib/firefox/firefox -contentproc -childID 15 -isForBrowser -prefsLen 9408 -prefMapSize 184979 -parentBuildID 20190521202118 -greomni /u+1121 daygeek20    4191388 419180 100552 S5.02.6 126:02.84 /usr/bin/gnome-shell1902 daygeek20    1701644 32721682536 S20.02.0 153:27.92 /opt/google/chrome/chrome2969 daygeek20    1051116 32465692388 S15.02.0 149:38.09 /opt/google/chrome/chrome --type=renderer --field-trial-handle=10346122902703263820,11905758137655502112,131072 --service-pipe-token=1339861+1068 daygeek20    1104856 309552 278072 S5.01.9 143:47.42 /usr/lib/Xorg vt2 -displayfd 3 -auth /run/user/1000/gdm/Xauthority -nolisten tcp -background none -noreset -keeptty -verbose 327246 daygeek20      907344 265600 108276 S30.01.610: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+------------------------------------------------------------------+PIDPPID %MEM %CPU CMD8223    16.46.8 /usr/lib/firefox/firefox --new-window1394811216.31.2 /usr/bin/../lib/notepadqq/notepadqq-bin867182234.47.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 tab1716382233.00.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 tab112110782.51.6 /usr/bin/gnome-shell1793782232.50.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 tab849982232.20.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 tab830682232.20.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 tab919882232.10.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以上就是关于小猿圈Linux老师教你Bash脚本监控内存使用情况的全部内容,要了解更多关于Linux开发方面内容的小伙伴,请我每天会不定时的更新关于学习方面的知识linux自学交流1群:819805410,也可以关注小猿圈里面有最新最全面的视频等你来学习,快速掌握Linux从入门到精通开发实战技能。
页: [1]
查看完整版本: 小猿圈Linux开发之Bash脚本监控内存使用情况