Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Mãos à obra: Salvando os arquivos com extensão .log

#!/bin/bash

if [ ! -d log ]
then 
    mkdir log
fi

processos_memoria(){
    processos=$(ps -e -o pid --sort -size | head -n 11 | grep [0-9]
    for pid in $processos
    do
        nome_processo=$(ps -p $pid -o comm=)
        echo -n $(date +%F,%H:%$M:%S, ) >> log/$nome_processo.log
        tamanho_processo=$(ps -p $pid -o size | grep [0-9])
        echo "$(bc <<< "scale=2; $tamanho_processo/1024") MB" >> log/$nome_processo.log
    done
}

processo_memoria
if [ $? -eq 0 ]
then
    echo "Os arquivos foram salvos com sucesso"
else
    echo "Houve um problema ao salvar os arquivos"
fi
1 resposta
solução!

Olá, Henrique! Parece que você está quase lá, mas notei um pequeno erro no seu script que pode estar causando problemas.

Na linha onde você está tentando pegar os processos, falta um parêntese de fechamento. A linha correta seria:

processos=$(ps -e -o pid --sort -size | head -n 11 | grep [0-9])

Além disso, notei um pequeno erro na linha onde você está tentando pegar a hora. Onde está escrito %$M, deveria ser %M. Então a linha correta seria:

echo -n $(date +%F,%H:%M:%S, ) >> log/$nome_processo.log

E o nome da função que você está chamando está errado. Você definiu a função como processos_memoria(), mas está chamando processo_memoria. Então a chamada correta seria:

processos_memoria

Com essas correções, seu script deve funcionar como esperado. Espero ter ajudado e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software