質問: 単一プロセスのcpu /メモリ使用量を監視する方法は? 1つのプロセスのメモリ/ cpu使用率をリアルタイムで監視したいと思います。 topに似ていますが、1つのプロセスのみを対象とし、ある種の履歴グラフが望ましいです。
回答: topとawkを使用すると、簡単に作成できます。 %cpu($9)+%mem($10)の使用状況のコンマ区切りのログで、後で統計およびグラフ作成ツールに入力できます。top -b -d $delay -p $pid | awk -v ofs="," '$1+0>0 { print strftime("%y-%m-%d %h:%m:%s"),$1,$nf,$9,$10; fflush() }' 出力は次のようになります2019-03-26 17:43:47,2991,firefox,13.0,5.2 2019-03-26 17:43:48,2991,firefox,4.0,5.2 2019-03-26 17:43:49,2991,firefox,64.0,5.3 2019-03-26 17:43:50,2991,firefox,71.3,5.4 2019-03-26 17:43:51,2991,firefox,67.0,5.4 ただし、出力されるタイムスタンプがtopのしくみに起因して実際に$delay遅れているため、大きな$delayの場合は良い結果が得られません。詳細に触れずに、これを回避する1つの簡単な方法は、topによって提供された時間をログに記録することです。top -b -d $delay -p $pid | awk -v ofs="," '$1=="top"{ time=$3 } $1+0>0 { print time,$1,$nf,$9,$10; fflush() }' その場合、タイムスタンプは正確ですが、出力は$delayだけ遅れます。