Eu curti bastante a ideia do script de Memória e resolvi aplicar no Ambiente que administro no meu trabalho, porém optei por gerar e um único arquivo. Mas ainda mais, quis adicionar que o script sem faz ao menos um Backup do arquivo processos.log antes de executar novamente, assim eu tenho a execução atual e a ultima execução, mas não consigo fazer criar o backup.
#!/bin/bash
if [ ! -d /utils/bash/logs ]
then
mkdir -p /utils/bash/logs
else
if [ ! -f /utils/bash/logs/processos.log ]
then
mv /utils/bash/logs/processos.log /utils/bash/logs/processos.bkp
else
processos_memoria
fi
fi
processos_memoria(){
processos=$(ps -e -o pid --sort -size | head -n 11 | grep [0-9])
echo "TOP 10 CONSUMO DE MEMORIA EM $(date +%F)
" > /utils/bash/logs/processos.log
for pid in $processos
do
nome_processo=$(ps -p $pid -o comm=)
echo -n "Nome: $nome_processo -" >> /utils/bash/logs/processos.log
echo -n " Data: $(date +%F,%H:%M:%S) -" >> /utils/bash/logs/processos.log
tamanho_processo=$(ps -p $pid -o size | grep [0-9])
echo " Mem: $(bc <<< "scale=2;$tamanho_processo/1024") MB
" >> /utils/bash/logs/processos.log
done
}
processos_memoria
if [ $? -eq 0 ]
then
echo "Logs gerados com sucesso!"
else
echo "ERRO!!!"
fi
A saída ficou do jeito que eu queria mesmo, porém, queria alguma dica para gerar este backup.
SAÍDA:
TOP 10 CONSUMO DE MEMORIA EM 2017-10-02
Nome: beam.smp - Data: 2017-10-02,21:01:16 - Mem: 3646.24 MB
Nome: httpd - Data: 2017-10-02,21:01:16 - Mem: 453.94 MB
Nome: httpd - Data: 2017-10-02,21:01:16 - Mem: 453.14 MB
Nome: polkitd - Data: 2017-10-02,21:01:16 - Mem: 440.26 MB
Nome: memcached - Data: 2017-10-02,21:01:16 - Mem: 320.25 MB
Nome: tuned - Data: 2017-10-02,21:01:16 - Mem: 297.24 MB
Nome: NetworkManager - Data: 2017-10-02,21:01:16 - Mem: 289.33 MB
Nome: rsyslogd - Data: 2017-10-02,21:01:16 - Mem: 152.50 MB
Nome: httpd - Data: 2017-10-02,21:01:16 - Mem: 134.67 MB
Nome: httpd - Data: 2017-10-02,21:01:17 - Mem: 133.85 MB