システムモニターへのログ記録機能の追加

LinuxBeginner
オンラインで実践に進む

はじめに

このチャレンジでは、提供された Linux システム監視スクリプトにログ記録機能を追加して機能を拡張します。目的は、監視サイクルごとにリソース使用状況(CPU、メモリ、ディスク)をログファイルに記録することです。このタスクを通じて、シェルスクリプトを修正・拡張し、ファイルへの出力処理を組み込む能力を試します。

ベースとなるスクリプトはあらかじめ用意されています。そこにログ記録機能を実装してください。

システムモニターへのログ記録機能の追加

タスク

  • /home/labex/project/system_monitor.sh スクリプトを修正し、リソース使用状況(CPU、メモリ、ディスク)を同じディレクトリ内の resource_usage.log という名前のログファイルに追記するようにしてください。各エントリには現在のシステム日時を含める必要があります。

要件

  • ログファイル名は resource_usage.log とし、/home/labex/project ディレクトリに配置すること。
  • 各ログエントリには、日付、時刻、および CPU、メモリ、ディスクのリソース使用率(%)を含めること。
  • ログの記録処理は、各監視サイクル内でリソース使用状況の値が計算された直後に実行されるように実装すること。

ヒント

  1. 現在の日時を取得するには date コマンドを使用します(例:date '+%Y-%m-%d %H:%M:%S')。出力形式のカスタマイズ方法については、man date ページで詳細を確認してください。
  2. ファイルに内容を追記(アペンド)するには、>> 演算子を使用してください。実行のたびにファイルを上書き(オーバーライト)しないよう注意しましょう。
  3. ログファイルに書き込む前に、リソース使用状況の値を一つの文字列にまとめます。これには変数と文字列補完(String Interpolation)を活用してください。
  4. ログファイルがスクリプトと同じディレクトリに書き込まれるよう、/home/labex/project/resource_usage.log のような絶対パス、または適切な相対パスを指定してください。

実行例

タスク完了後、/home/labex/project/system_monitor.sh を数秒間実行すると、以下のような内容の resource_usage.log ファイルが生成されるはずです。

cat /home/labex/project/resource_usage.log
2024-12-04 14:00:01 CPU: 15% Memory: 45% Disk: 62%
2024-12-04 14:00:03 CPU: 18% Memory: 46% Disk: 62%
2024-12-04 14:00:05 CPU: 20% Memory: 47% Disk: 62%

スクリプトを終了するには、Ctrl+C を押して割り込み信号を送信します。

System Monitor Log Example

まとめ

このチャレンジでは、Linux システム監視スクリプトにログ記録機能を追加しました。この機能により、リソース使用状況がログファイルに記録され、時間の経過に伴うリソース消費の推移を追跡できるようになりました。このタスクを通じて、Bash スクリプトにおけるファイル操作と date コマンドの使い方の理解を深めることができました。

✨ 解答を確認して練習