O que top -M -n 1
faz? No meu sistema, -M
é uma opção inválida. Eu suponho que você está tentando obter a quantidade de memória em uso no sistema (em megabytes)? Nesse caso, use free
em vez de top
- extrair dados de um aplicativo ncurses como top
é bobagem quando existem ferramentas de texto simples como free
para fazer o trabalho.
De qualquer forma, vou usar free -m
no meu script de exemplo.
Desenvolvendo o trabalho do Archemar para eliminar excessivos comandos grep e awk:
mem=$(free -m | awk '/Mem:/ {print $3}')
if [ "$mem" -gt 1024 ] ; then (
echo "Memory utilisation is high"
echo "Please find history of the memory utilisation below"
sar -r | awk '{print $1,$2,$3,$4}' | column -t
) >>/home/shyam/utilisation.txt
fi
Em vez de usar awk
para fazer todo o trabalho, ele usa apenas awk
para extrair os dados de uso de memória da saída de free -m
e, em seguida, usa o código shell para fazer o resto. Ele executa echo
e sar | awk
dentro de um sub-shell, com toda a saída do sub-shell redirecionada para utilisation.txt
Se você não tiver free
em seu sistema e top -M -n 1
funcionar para você, use-a como a primeira linha:
mem=$(top -M -n1 | awk '/Mem/ {print $7}')