
サーバー上に bash を作成し、60 秒ごとに「free」と「top」の出力の一部をログに記録したいと考えています。cron ジョブの設定方法はわかっていますが、「free」と「top」の出力を取得して解析し、ファイルに保存 (追加) する方法がわかりません。
たとえば、「top」を実行するときに、次の部分だけを保存したいとします。
%CPU: 18.2 us、
そして、「free」を実行するときは、最初の行 (Mem:) の「available」列のみを保存したいと思います。
では CentOS 7 で bash を実行するにはどうすればいいのでしょうか?
答え1
1 分ごとに監視する場合は、現在の使用率ではなく、CPU の負荷平均を使用することをお勧めします。
cat /proc/loadavg | awk '{print "Load last minute:", $1}'
この行には、過去 1 分間の平均 CPU 使用率が示されます。これは、平均使用率がはるかに低い場合でも、ピークが 100% になり、それを保存できるため、%CPU 使用率よりも正確です。
答え2
使用方法awk
:
top -n 1 | awk '/^%Cpu\(s\)/ {print "%Cpu(s)", $2, "us"}'
free | awk '/^Mem:/ {print $7}'