Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Processos Memória

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
3 respostas
solução!

Consegui encontrar meu engano pessoal, eu estava colocando " ! " antes do -f então eu fazia o contrário.

Valeu mesmo assim...

criou o backup...

YEAHHHHH!!!!!

Meu script no final ficou assim:

#!/bin/sh
#By Guga
####################
####################

DATE=`date +%F_%H:%M:%S`

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'$DATE.log
        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 "-execute: cat /utils/bash/logs/processos.log"
else
        echo "ERRO!!!"
fi

A saída fica assim:

[root@R02S05V02-ZAPP1-LB1 /]# cat /utils/bash/logs/processos.log
TOP 10 CONSUMO DE MEMORIA EM 2017-10-02

Nome: beam.smp - Data: 2017-10-02,21:36:32 - Mem: 3647.24 MB

Nome: httpd - Data: 2017-10-02,21:36:32 - Mem: 453.94 MB

Nome: httpd - Data: 2017-10-02,21:36:32 - Mem: 453.14 MB

Nome: polkitd - Data: 2017-10-02,21:36:32 - Mem: 440.26 MB

Nome: memcached - Data: 2017-10-02,21:36:32 - Mem: 320.25 MB

Nome: tuned - Data: 2017-10-02,21:36:32 - Mem: 297.24 MB

Nome: NetworkManager - Data: 2017-10-02,21:36:32 - Mem: 289.33 MB

Nome: rsyslogd - Data: 2017-10-02,21:36:32 - Mem: 152.50 MB

Nome: httpd - Data: 2017-10-02,21:36:32 - Mem: 134.67 MB

Nome: httpd - Data: 2017-10-02,21:36:33 - Mem: 133.85 MB