Bash スクリプトを使用して Linux のメモリ使用量を監視する方法

Bash スクリプトを使用して Linux のメモリ使用量を監視する方法

序文

Linux システムのパフォーマンスを監視するために使用できるオープンソースの監視ツールが市場には数多くあります。システムが指定されたしきい値に達したときに電子メールアラートを送信できます。 CPU 使用率、メモリ使用率、スワップ使用率、ディスク領域使用率など、あらゆるものを監視できます。

少数のシステムしかなく、それらを監視したい場合は、小さなシェル スクリプトを作成すると、タスクが非常に簡単になります。

このチュートリアルでは、Linux システムのメモリ使用率を監視するための 2 つのシェル スクリプトを追加しました。システムが指定されたしきい値に達すると、特定の電子メール アドレスに電子メールが送信されます。

方法 1: Linux Bash スクリプトを使用してメモリ使用率を監視し、メールを送信する

システムが特定のしきい値に達したときにのみ、現在のメモリ使用率のパーセンテージを電子メールで取得する場合は、次のスクリプトを使用します。

これは非常にシンプルでわかりやすい 1 行のスクリプトです。ほとんどの場合、私はこのアプローチを好みます。

システムのメモリ使用率が 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 "メモリ使用量過多の警告" [email protected]

注意:弊社のメール アドレスを使用する代わりに、メール アドレスを変更する必要があります。さらに、必要に応じてメモリ使用率のしきい値を変更することもできます。

出力: 以下のような電子メールアラートが届きます。

高メモリ警告: 80.40%

これまで、多くの便利なシェル スクリプトを追加してきました。これらをご覧になりたい場合は、以下のリンクにアクセスしてください。

* シェル スクリプトを使用して日常業務を自動化する方法は?

方法 2: Linux Bash スクリプトを使用してメモリ使用率を監視し、メールを送信する

メールアラートでメモリ使用率に関する詳細情報を取得したい場合。 top および ps コマンドに基づく上位のメモリ使用率とプロセスの詳細を含む次のスクリプトを使用します。

これにより、システムのパフォーマンスがすぐにわかります。

システムのメモリ使用率が「80%」に達すると、電子メールが送信されます。

注意: 弊社のメール アドレスを使用する代わりに、メール アドレスを変更する必要があります。さらに、必要に応じてメモリ使用率のしきい値を変更することもできます。

# vi /opt/scripts/memory-alert.sh

#!/bin/sh
ramusage=$(free | awk '/Mem/{printf("RAM 使用量: %.2f\n"), $3/$2*100}' | awk '{print $3}')

[ "$ramusage" > 20 ] の場合;

 件名="注意: $(ホスト名) のメモリ使用率が $(日付) に高くなっています"
 メッセージ="/tmp/Mail.out"
 宛先:[email protected]
 echo "現在のメモリ使用量は: $ramusage%" >> $MESSAGE
 エコー "" >> $MESSAGE
 echo "------------------------------------------------------------------" >> $MESSAGE
 echo "top コマンドを使用したメモリ消費量上位プロセス" >> $MESSAGE
 echo "------------------------------------------------------------------" >> $MESSAGE
 echo "$(top -b -o +%MEM | head -n 20)" >> $MESSAGE
 エコー "" >> $MESSAGE
 echo "------------------------------------------------------------------" >> $MESSAGE
 echo "ps コマンドを使用したメモリ消費量上位のプロセス" >> $MESSAGE
 echo "------------------------------------------------------------------" >> $MESSAGE
 echo "$(ps -eo pid,ppid,%mem,%Memory,cmd --sort=-%mem | head)" >> $MESSAGE
 メール -s "$SUBJECT" "$TO" < $MESSAGE
 rm /tmp/Mail.out
フィ

最後に、この操作を自動化する cron ジョブを追加します。 5分ごとに実行されます。

# crontab -e
*/5 * * * * /bin/bash /opt/scripts/memory-alert.sh

注意:スクリプトは 5 分ごとに実行されるようにスケジュールされているため、最大 5 分以内に電子メールによるリマインダーが届きます (ただし、時間によっては 5 分にならない場合もあります)。

たとえば、システムが指定された制限値 8.25 に達すると、5 分以内に電子メールアラートが届きます。これで明らかになったと思います。

出力: 以下のような電子メールアラートが届きます。

メモリの現在の使用率は: 80.71%

+----------------------------------------------------------------------------------+
top コマンドを使用したメモリ消費量上位プロセス
+----------------------------------------------------------------------------------+
トップ - 12:00:58 5 日間稼働、9:03、ユーザー 1 人、負荷平均: 1.82、2.60、2.83
タスク: 合計 314、実行中 1、スリープ中 313、停止中 0、ゾンビ 0
%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 メモリ: 合計 16248588、空き 5015964、使用中 6453404、バッファ/キャッシュ 4779220
KiB スワップ: 合計 17873388、空き 16928620、使用済み 944768。使用可能なメモリ 6423008

 PID ユーザー PR NI 仮想リソース SHR S %CPU %MEM 時間+ コマンド
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 デイギーク 20 4191388 419180 100552 S 5.0 2.6 126:02.84 /usr/bin/gnome-shell
 1902 デイギーク 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 -n​​oreset -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+

+----------------------------------------------------------------------------------+
ps コマンドを使用してメモリを最も多く消費しているプロセス
+----------------------------------------------------------------------------------+
 PID PPID %MEM %CPU コマンド
 8223 1 6.4 6.8 /usr/lib/firefox/firefox --新しいウィンドウ
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 タブ
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 タブ
 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 タブ
 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 タブ
 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 タブ
 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 タブ

出典: https://www.2daygeek.com/linux-bash-script-to-monitor-memory-utilization-usage-and-send-email/

著者: Magesh Maruthamuthu トピック: lujun9972 翻訳者: wxy 校正者: wxy

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。

以下もご興味があるかもしれません:
  • バッチスクリプトを使用して特定のディレクトリで Git-Bash ウィンドウを起動する
  • bash のスクリプトデバッグメカニズムの詳細な説明
  • シェル スクリプト (bash スクリプト) でスペースを含む変数を処理する
  • Bashスクリプトを使用すると、シェルにログインするたびにLinuxシステム情報を表示できます。
  • bash スクリプトで ssh/scp コマンドにパスワードを渡す方法の詳細な説明
  • Linux Bash スクリプトを使用してユーザーを識別する方法の例
  • シェルスクリプト実行におけるsource、sh、bash、./の違いの詳細な説明
  • Linux bash スクリプト監視、WebLogic サービスの開始と停止、スクリプトの記述
  • 安全で完全に機能する Bash スクリプトの書き方

<<:  MySQLサーバのスレッド数を表示する方法の詳細な説明

>>:  Vueはタブを切り替えてデータの状態を維持する3つの方法を実装します

推薦する

Centos8 で NIS ドメイン サービスをセットアップおよび構成するための詳細な手順

目次NIS の紹介ネットワーク環境: 1. 環境の準備(両方のノードが必要) 2.nisマスターサー...

MySQLクエリ条件におけるonとwhereの配置の違いの分析

導入今日SQLを書いているときに、問題が発生しました。要件は、データを照会し、スコアと過去 1 週間...

HTML 形式の JSON 出力の例 (テスト インターフェース)

JSON データを美しいインデント形式で表示するには、最も単純な JSON.stringify 関...

MySQLは外部SQLスクリプトファイルのコマンドを実行します

目次1. SQLコマンドを含むSQLスクリプトファイルを作成する2. SQLスクリプトファイルを実行...

MySQL共通ストレージエンジンの機能と使用方法の詳細な説明

この記事では、一般的な MySQL ストレージ エンジンの機能と使用方法を例を使って説明します。ご参...

テキストエリア テキストエリアの幅と高さ 幅と高さの自動適応実装コード

コードをコピーコードは次のとおりです。 <HTML> <ヘッド> <T...

将来最も成功する企業はテクノロジー企業でしょうか、それともデザイン企業でしょうか?

ムーアの法則はもはや適用されない2004年にフレックストロニクスがフロッグデザインを買収したのを皮切...

CSSはカラフルでスマートな影の効果を実現します

背景前景要素から特定の色を継承する影の効果を作成する方法を知りたいと思ったことはありませんか?方法に...

Ubuntuにopencvをインストールする正しい方法の詳細な説明

この記事ではUbuntuでC++インターフェースを使用してopencvをインストールする方法について...

MySQL 5.7.20 の解凍バージョンをインストールするための詳細な手順 (2 つの方法)

Windows 64ビットでのMySQLのインストールについて説明します。5.7以降、MySQLの...

vsftpd ユーザーが ssh 経由でログインすることを禁止する方法

序文vsftp は使いやすく安全な FTP サーバー ソフトウェアです。システムユーザーまたは仮想ユ...

Zabbix 監視 Docker アプリケーション構成

コンテナの応用はますます一般的になっていますが、大量のコンテナをどのように管理すればよいのでしょうか...

MySQL データベースのバックアップ プロセスに関する注意事項

今日は、データ バックアップに関連するいくつかの点について調べ、MySQL データ バックアップに関...

MySQL 外部キー制約の詳細な説明

公式ドキュメント: https://dev.mysql.com/doc/refman/5.7/en/...

JavaScript の手ぶれ補正とスロットリングの詳細な説明

目次デバウンススロットル要約するデバウンス定義: スクロール イベントなど、短時間に連続してトリガー...