オペレーティングシステム:Debian 8 x64
5秒ごとにCPUレートを次の形式のCSVファイルに記録したいと思います。
YYYY-MM-DD HH:MM:SS,CPU%
top
私はawk / grepを使って((us + sy)/(us + sy + id)* 100)を計算するためにこのプログラムを使用する方法に慣れていません。あなたが助けることができることを願っています。
検索では、人々がtop -bn1とtop -bn2を使用するいくつかの例を見ました。しかし、私のループがtopを呼び出すと、バッチモードをまったく使用する必要はないと思います。
これは私が作成し始めたシェルスクリプトです。
#!/bin/bash
while sleep 5; do "top | grep "Cpu(s)" | awk '{}' >> cpu.csv; done
ベストアンサー1
次の方法でこれを実行できますvmstat
。
#!/usr/bin/perl
open VMSTAT, "vmstat 5|";
<VMSTAT>; <VMSTAT>; # skip the header
while (<VMSTAT>) {
@now = split;
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime (time);
printf "%d-%02d-%02d %02d:%02d:%02d,%d%\n", $year+1900, $mon, $mday, $hour, $min, $sec,
$now[12] + $now[13];
}
ほとんどのコードは日付を印刷するために使用されます。