この記事では、Linux環境で特定のサービス(プロセス)のCPUとメモリ使用率を確認する方法を詳しく解説します。具体的なコード例とその解説、応用例を含めています。システム管理者やLinuxユーザーがしばしば直面するこの問題を解決する手法を身につけましょう。
目次
なぜ特定のサービスのリソース使用率を知る必要があるのか
特定のサービスが多くのリソースを消費している場合、それはシステム全体のパフォーマンスに影響を与える可能性があります。高いCPUやメモリ使用率は、サービスが適切に機能していない、または最適化が必要であることを示す兆候であり得ます。
基本的なコマンド
Linuxには様々なシステムモニタリングツールが存在しますが、基本的なコマンドラインツールを用いて状況を確認する方法から始めましょう。
`top`コマンド
`top`コマンドは、システムの状態をリアルタイムで表示するコマンドです。
top # システムの状態をリアルタイムで確認
こちらを実行すると、CPU使用率、メモリ使用率、実行中のプロセスなどが表示されます。
`ps`コマンド
`ps`コマンドは、現在実行中のプロセスの一覧を表示します。
ps aux # すべてのプロセスの一覧を表示
特定のサービスのCPUとメモリ使用率を確認する方法
`pgrep`と`ps`を組み合わせる
pgrep -f [サービス名] | xargs ps u -p # 特定のサービスのCPUとメモリ使用率を確認
こちらのコマンドは`pgrep`で特定のサービス名でプロセスIDを取得し、そのIDを`ps`コマンドで詳細に表示します。
応用例
1. 特定のサービスのCPU使用率を監視し、閾値を超えたら警告メールを送る
#!/bin/bash
threshold=70 # CPU使用率の閾値
process_name="example-service"
cpu_usage=$(pgrep -f $process_name | xargs ps u -p | awk 'NR>1 {print $3}')
if (( $(echo "$cpu_usage > $threshold" | bc -l) )); then
echo "CPU Usage of $process_name is high: $cpu_usage%" | mail -s "High CPU Usage Alert" admin@example.com
fi
2. 特定の時間にサービスのリソース使用率をログに出力する
#!/bin/bash
log_file="/var/log/resource_usage.log"
process_name="example-service"
echo "------ $(date) ------" >> $log_file
pgrep -f $process_name | xargs ps u -p >> $log_file
3. 特定のサービスが一定以上のメモリを使用していたら再起動する
#!/bin/bash
threshold=800 # メモリ使用量の閾値 (MB)
process_name="example-service"
memory_usage=$(pgrep -f $process_name | xargs ps u -p | awk 'NR>1 {print $6/1024}')
if (( $(echo "$memory_usage > $threshold" | bc -l) )); then
systemctl restart $process_name
fi
4. `cron`を使用して定期的にリソース監視スクリプトを実行する
`cron`を使用して、上述のスクリプトを定期的に実行できます。
* * * * * /path/to/your-script.sh # 1分ごとにスクリプトを実行
5. GrafanaとPrometheusを使った監視
より高度な監視を行いたい場合は、GrafanaとPrometheusを使用してダッシュボードを作成することも可能です。
まとめ
Linuxで特定のサービスのCPUとメモリ使用率を確認する方法は多数ありますが、基本的なコマンドラインツールであれば`top`や`ps`、`pgrep`を使って簡
単に確認することが可能です。さらに、応用例を通して自動的にリソースを監視する方法も紹介しました。これらの手法を使って、システムの健全性を保ちましょう。
コメント