
Quero criar um bash no meu servidor para registrar uma parte da saída de "free" e "top" a cada 60 segundos. Eu sei como configurar o cron job, mas não tenho ideia de como obter a saída de "free" e "top", analisá-los e salvá-los em um arquivo (anexando-o).
Por exemplo, quando executo "top", gostaria de salvar apenas a parte assim:
% CPU(s): 18,2 us,
E quando executo "free" quero apenas salvar a coluna "available" da primeira linha (Mem:).
Então, como faço isso no centos 7?
Responder1
Se você quiser monitorar a cada 1 minuto, recomendo usar a média de carga da CPU em vez do uso atual.
cat /proc/loadavg | awk '{print "Load last minute:", $1}'
Esta linha fornecerá o uso médio da CPU no último minuto, que é mais preciso do que a% CPU usada porque você pode ter um pico de 100% e economizar mesmo que sua utilização média seja muito menor.
Responder2
Usando awk
:
top -n 1 | awk '/^%Cpu\(s\)/ {print "%Cpu(s)", $2, "us"}'
free | awk '/^Mem:/ {print $7}'