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?
 
             
             Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!
   Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!