1
resposta

Análise da questão sobre monitoramento de RAM com free, grep e awk

Fala Turma,

Estava revisando os conceitos da aula e me deparei com a seguinte questão de múltipla escolha. Gostaria de compartilhar minha análise para discutirmos e confirmarmos se o raciocínio está correto.

A questão é:

Você está desenvolvendo um script para monitorar o uso de recursos do sistema em um servidor de streaming de música chamado Playcatch. Você decidiu monitorar a memória RAM para identificar possíveis gargalos de desempenho.

Qual comando você deve usar para extrair e formatar as informações de memória total (coluna 2), usada (coluna 3) e livre (coluna 4) da memória RAM, e salvá-las em um relatório de monitoramento chamado monitoramento_hardware.txt?

As alternativas são:

free -h | grep Mem | awk '{print "Total: " $2 ", Usada: " $3 ", Livre: " $4}' >> monitoramento_hardware.txt

free | grep Mem | awk '{print "Total: " $2 ", Usada: " $3 ", Livre: " $4}'

free -h | awk '{print "Total: " $2 ", Usada: " $3 ", Livre: " $4}' >> monitoramento_hardware.txt

free -h | grep Mem | awk '{print "Total: " $1 ", Usada: " $2 ", Livre: " $3}' >> monitoramento_hardware.txt

free -m | grep Swap | awk '{print "Total: " $2 ", Usada: " $3 ", Livre: " $4}' >> monitoramento_hardware.txt

Minha Análise
Para mim, a Alternativa 1 é a correta. Vou detalhar o porquê:

free -h: Este comando exibe o status da memória (RAM e Swap) em formato "human-readable", ou seja, fácil de ler (ex: "9.6Gi" em vez de um número enorme em bytes).

| grep Mem: O "pipe" (|) envia a saída do free -h para o grep. O grep Mem filtra essa saída e captura apenas a linha que contém "Mem", que é a linha da memória RAM (excluindo a linha "Swap").

| awk '{print "Total: " $2 ", Usada: " $3 ", Livre: " $4}': O awk recebe a linha da RAM e a processa.

$2 é a segunda coluna (Total)

$3 é a terceira coluna (Usada)

$4 é a quarta coluna (Livre)

O print formata a saída exatamente como pedido.

monitoramento_hardware.txt: O >> pega a string formatada pelo awk e a adiciona (append) ao final do arquivo monitoramento_hardware.txt.

Por que as outras estão incorretas:
Alternativa 2: Faltam duas coisas: o -h (o que tornaria a saída menos legível) e, o mais importante, falta o redirecionamento >>

monitoramento_hardware.txt. Esse comando só imprimiria o resultado no terminal, não o salvaria no arquivo.

Alternativa 3: Falta o grep Mem. Sem ele, o awk tentaria processar todas as linhas da saída do free -h, incluindo a linha "Swap" e a linha de cabeçalho, o que geraria um resultado incorreto.

Alternativa 4: As colunas do awk estão erradas. $1 seria a palavra "Mem:", $2 seria "Total" e $3 seria "Usada". O resultado ficaria "Total: Mem:, Usada: 9.6Gi, Livre: 2.8Gi", o que está completamente errado.

Alternativa 5: O filtro usado é grep Swap. A questão pede para monitorar a memória RAM, e não a memória Swap.

Essa questão é um ótimo exemplo de como usar "pipes" no Linux para combinar ferramentas e filtrar exatamente a informação que precisamos.

O que acham? O raciocínio está correto?

1 resposta

Oi, João! Como vai?

Agradeço por compartilhar.

Sua análise está muito bem detalhada e coerente. Você explicou com clareza a função de cada parte do comando e demonstrou domínio no uso combinado de free, grep e awk. O raciocínio está correto: a alternativa 1 realmente atende ao enunciado, pois filtra apenas a linha da RAM e salva o resultado formatado no arquivo de monitoramento.

Continue praticando esses comandos, pois eles são muito úteis em rotinas de automação e análise de desempenho.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!