ここで私が最初に思いつくのは、SAR または sysstat パッケージ全体に組み込まれているものです。しかし、それが事実であるとしても、この解決策は見つからないようです。
私が見たいのは、できれば sysstat 経由で、SAR ログとほぼ同じ形式のプロセス使用状況 (メモリ、CPU など) の履歴ログです (何らかの方法で SAR ファイルから直接入手できない場合)。監視ソフトウェアが利用できることは知っていますが、私はむしろ、ほとんど邪魔にならないパッケージ、そして実際には statsd/collectd 経由で比較的直感的に解析できるものを探しています。
答え1
sar コマンドをバックグラウンド プロセスとして実行します。構文は次のとおりです。
sar -o datafile interval count >/dev/null 2>&1 &
すべてのデータはバイナリ形式でキャプチャされ、ファイル (データファイル) に保存されます。その後、データは sar コマンドで -f オプションを使用して選択的に表示できます。interval および count パラメータを設定して、interval 秒間隔で count レコードを選択します。count パラメータが設定されていない場合は、ファイルに保存されているすべてのレコードが選択されます。この方法でデータを収集すると、一定期間のシステム使用状況の特徴を把握し、ピーク使用時間を判断するのに役立ちます。
答え2
上位プロセスのリソース使用量を 5 分ごとに出力するダム while ループを使用できます。
while true; do
date;
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-pcpu | head;
echo;
sleep 300;
done
上記は、CPU 使用率が最も高い上位 9 つのプロセスを出力します。メモリを最も多く使用している上位 9 つのプロセスを取得するには、次のコマンドを使用します。
while true; do
date;
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-pmem | head;
echo;
sleep 300;
done
例
次の出力例は、Apache が明らかに CPU を最も多く消費するプロセスであることを示しています。
Sun Jan 28 23:46:28 UTC 2024
PID PPID CMD %MEM %CPU
25130 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.7
12878 11432 /usr/sbin/httpd -DFOREGROUN 0.2 2.5
23903 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.4
898 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.2
902 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.2
910 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.2
8397 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.2
9263 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.2
23911 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.2
Sun Jan 28 23:51:28 UTC 2024
PID PPID CMD %MEM %CPU
25130 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.6
12878 11432 /usr/sbin/httpd -DFOREGROUN 0.2 2.4
23903 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.4
898 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.2
902 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.2
910 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.2
8397 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.2
9263 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.2
23911 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.2
制限事項
明らかにこれはダメだ。なぜなら、瞬時のコマンドが実行された瞬間のリソース使用量 (5 分ごと)。
理想的には、平均リソース使用量を間隔出力間の時間。しかし、この回答は 7 年間公開されており、良い回答がないので、何もないよりはましです。
一晩セッションで実行したままにしておくscreen
と、朝までにはより良い洞察が得られます (最小限の労力で)。