Используя 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
Однако это не даст хороших результатов для больших $delay
, потому что напечатанная метка времени на самом деле $delay
отстает из-за того, как работает вывод top
. Не вдаваясь в подробности, один простой способ обойти это — записать время, предоставленное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
.