让知识连接你我
投稿赚钱
当前位置: 首页 > Linux > 如何利用Bash脚本监控Linux的内存使用情况
  • 101
  • 微信分享

    扫一扫,在手机上查看

如何利用Bash脚本监控Linux的内存使用情况

2019.09.05 10:00 248 浏览 举报

  这篇文章主要给大家介绍了关于怎样利用Bash脚本监控Linux的内存运用具体情况的相关全部内容,文中通过举例代码介绍的非常完整,对大家学习可能运用linux具有一定的参考学习使用价值,需要的小伙伴们下面来一起学习学习吧

  前言

  目前专业市场上有众多开源监控工具可适用于监控 Linux 系统的性能参数。当系统达标特定的阈值限制时,它可以上传电子邮件警报。它可以控制 CPU 利用率、内存利用率、交换利用率、磁盘空间利用率等所有全部内容。

  假如你只有很少的系统并且要想控制它们,那么编写一个小的 shell 脚本可以使你的任务变的简单。

  在本教程中,我们添加了两个 shell 脚本来控制 Linux 系统上的内存使用率。当系统达标给定阈值时,它将给特定电子邮件地址发邮件。

  方法-1:用 Linux Bash 脚本控制内存使用率并上传电子邮件

  如果只想在系统达标给定阈值时通过电子邮件获取现阶段内存使用率百分比,请运用下列脚本。

  这是个简单直接的单行脚本。在大多数具体情况下,我更喜欢运用这种方法。

  当你的系统达标内存使用率的 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 脚本。如果要查询这些全部内容,请导航至下列链接。

  * 怎么使用 shell 脚本自动执行日常活动?

  方法-2:用 Linux Bash 脚本控制内存使用率并上传电子邮件

  如果要在电子邮件警报中获取相关内存使用率的更多信息。运用下列脚本,当中包括基于 top 命令和 ps 命令的最高内存使用率和进程详细信息。

  这将立即让你认识系统的执行具体情况。

  当你的系统达标内存使用率的 “80%” 时,它将触发一封电子邮件。

  注意:你需要修改电子邮件地址而不是运用我们的电子邮件地址。此外,你能够按照你的要求修改内存使用率阈值。

  # 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 任务 来自动执行此操作。它将每 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.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/

本文首次发布于开创者素材 ,转载请注明出处,谢谢合作!

相关文章推荐