この問題を解決するのに役立ちますか? RAM使用量(RAMだけでなくCPUとネットワーク)を監視し、過去X秒間に最も多くのRAMを使用する3つのプロセスを表示するbashスクリプトを作成しようとしています。以下を実行して、最も多くのメモリを使用するプロセスを見つけることができることを知っています。
ps aux | awk '{print $2, $4, $11}' | sort -k2rn | head -n 3
しかし、このようなことをどのように繰り返すことができますか?私は今ここで何が起こっているのか見たくありませんが、60秒間監視し、最も多くのRAMを使用する上位3つのプロセスを確認します。
答え1
私はdstat
コマンドを使用します。とても便利です。以下を使って探索してみてください。man dstat
たとえば、
3秒ごとに最も高価なメモリを探します。
#dstat --top-mem 3 --most-expensive- memory process firefox 1430M firefox 1430M firefox 1431M firefox 1435M firefox 1435M firefox 1435M firefox 1435M firefox 1438M
同様に、CPU、ネットワーク、IOなどのポイントを設定できます。
dstat --top-cpu 3 -most-expensive- cpu process
firefox 3.5 firefox 4.5 firefox 2.4 firefox 2.6 firefox 2.8 firefox 2.0 firefox 2.8
答え2
メモリ消費量が最も多い上位3つのプロセスコマンド:
ps auxxx --sort=-rss |ヘッド-4
CPUを最も占める3つのプロセスは次のとおりです。
ps auxxx --sort=-%cpu |ヘッド-4
Cronjobでは、毎分これらのスクリプトを実行できます。
- /tmp/serverhealth.sh