一部の実行中のプロセスのリソース使用量を監視する最良の方法は何ですか?たとえば、一定期間のCPUとメモリ使用量のログファイルを生成したい場合です。
私が理解したのは、topコマンドまたはpsコマンドの使用、コード内のsysInfoコマンドの使用、/proc/ディレクトリのファイル直接クエリなど、さまざまなオプションがあります。いくつかの方法の長所と短所は明らかですが、例えばpsは平均CPU使用率を示しますが、topはよりすぐになります。質問topにもいくつかの問題があることを指摘しました)、私はまだLinuxに初めて触れているので、何かを見落とし、災いにつながりやすいと思います。
また、top、psを使用したりsysInfoを呼び出すのではなく、/proc/ファイルを直接クエリする方が良いですか?それともこのアプローチはお勧めできませんか?
ベストアンサー1
これは、スクリプトを使用せずにウォッチを使用して簡単に実行できます。
watch -t -n 10 "(date '+TIME:%H:%M:%S' ; ps aux | grep "pattern" | wc -l) | tee -a ログファイル"
ただし、この回答で述べたように、「ps -auxww | grep 'pattern' | wc -l」の代わりに「ps -up PID」(特定のプロセスIDのリソース使用量を表示するには)を使用します。
watchコマンドの更新をより速くまたは遅くするために、「watch -t -n XX」の後にXX番号を変更することもできます(watch -n0,5 = 0.5秒ごとに更新、watch -n10 = 10秒ごとに更新) 。