Usando awk
:
top -n 1 | awk '/^%Cpu\(s\)/ {print "%Cpu(s)", $2, "us"}'
free | awk '/^Mem:/ {print $7}'
Eu 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 idéia de como obter a saída de "free" e "top" e analisá-los e salvar em um arquivo (anexá-lo).
Por exemplo, quando eu executo "top" eu gostaria de salvar apenas a parte como esta:
% Cpu (s): 18,2 nós,
E quando eu corro "free" eu só quero salvar a coluna "disponível" da primeira linha (Mem :).
Então, como eu faço isso em centos 7?
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 lhe dará o uso médio da CPU no último minuto, que é mais preciso do que a% da CPU usada porque você pode ter um pico de 100% e economizar, mesmo se a sua utilização média for muito menor.