Introdução
Bem-vindo, Administrador de Sistemas Júnior! É uma manhã de segunda-feira agitada na "LabEx" e um alerta crítico acaba de chegar: o servidor principal da aplicação está sofrendo uma lentidão significativa, afetando todos os usuários. Os administradores seniores estão presos em uma reunião de emergência, e cabe a você investigar e estabilizar o sistema.
Este é o seu momento de brilhar. Sua missão é mergulhar na linha de comando do servidor, diagnosticar o problema inspecionando os processos em execução, neutralizar quaisquer culpados que estejam consumindo recursos excessivos e garantir que os serviços essenciais permaneçam operacionais. Ao final deste desafio, você terá provado sua capacidade de gerenciar um ambiente Linux real sob pressão, uma habilidade fundamental para qualquer administrador de sistemas.
- Pule temporariamente o desafio e continue com os Laboratórios Guiados subsequentes na trilha de aprendizado Linux.
- Discuta com o Labby ou visualize a solução.
Listando Processos Ativos do Sistema
Seu primeiro passo como Supervisor de Processos é obter uma visão completa do que está sendo executado no servidor no momento. Um instantâneo estático de todos os processos ativos ajudará você a iniciar sua investigação e identificar qualquer coisa incomum.
Tarefas
- Use um único comando para gerar uma lista detalhada de todos os processos em execução no sistema.
Requisitos
- O comando deve exibir processos de todos os usuários, não apenas os seus.
- O formato de saída deve ser orientado ao usuário, mostrando detalhes como o proprietário do processo, uso de CPU/memória e o comando completo que o iniciou.
Exemplos
Após executar o comando, você deverá ver uma saída semelhante a esta:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 169848 9064 ? Ss 08:30 0:02 /sbin/init
labex 1234 0.0 0.0 2324 564 pts/0 S+ 08:35 0:00 bash /home/labex/project/resource_hog.sh
labex 1235 0.0 0.0 2324 564 ? S 08:35 0:00 bash /home/labex/project/critical_service.sh
...
A saída mostrará múltiplos processos com colunas para usuário, ID do processo, uso de CPU, uso de memória e o comando que iniciou cada processo.
Dicas
- O comando mais comum para esta tarefa é o
ps. - Pense em quais opções para o comando
psmostrariam processos de todos os usuários (all), em um formato amigável ao usuário (user-friendly), e incluiriam processos não vinculados a um terminal (x).
Monitorando o Uso de Recursos dos Processos
A lista estática do ps foi um bom começo, mas a carga do servidor muda a cada segundo. Você precisa de uma visão dinâmica e em tempo real para ver qual processo está causando ativamente a lentidão. É hora de utilizar uma ferramenta de monitoramento mais poderosa.
Tarefas
- Inicie um utilitário interativo de linha de comando para monitorar os processos do sistema e o uso de recursos em tempo real.
- Identifique o nome do script que está consumindo mais CPU.
Requisitos
- Você deve usar uma ferramenta que forneça uma visão continuamente atualizada e em tempo real dos processos do sistema.
- A ferramenta deve permitir que você classifique os processos pelo uso de CPU por padrão.
- Assim que identificar o maior consumidor, saia da ferramenta para prosseguir para a próxima etapa.
Exemplos
Ao iniciar a ferramenta de monitoramento, você verá uma tela interativa que se atualiza automaticamente, mostrando algo como:
top - 09:15:30 up 1:45, 1 user, load average: 1.50, 1.20, 0.85
Tasks: 105 total, 2 running, 103 sleeping, 0 stopped, 0 zombie
%Cpu(s): 45.0 us, 5.0 sy, 0.0 ni, 50.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 2048.0 total, 850.4 free, 950.2 used, 247.4 buff/cache
MiB Swap: 0.0 total, 0.0 free, 0.0 used, 0.0 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1234 labex 20 0 12884 1564 1320 R 95.0 0.1 2:15.30 bash /home/labex/project/resource_hog.sh
1235 labex 20 0 12884 1564 1320 S 0.0 0.1 0:00.00 bash /home/labex/project/critical_service.sh
1 root 20 0 169848 9064 6868 S 0.0 0.4 0:02.15 systemd
...
A tela exibirá estatísticas do sistema no topo e uma lista de processos classificados pelo uso de CPU, com o processo de maior consumo no topo.
Dicas
- Este comando popular é frequentemente chamado de "Gerenciador de Tarefas" do mundo Linux.
- Você pode sair desta ferramenta interativa pressionando a tecla
q.
Identificando Processos Chave
Você encontrou o causador do problema: resource_hog.sh. No entanto, um bom administrador de sistemas não encerra processos de forma aleatória. Você também notou o critical_service.sh em execução. Antes de tomar qualquer medida contra o processo invasivo, você deve identificar e entender todos os processos chave em execução no sistema.
Tarefas
- Encontre o ID do Processo (PID) do script
critical_service.sh. - Verifique se o serviço crítico está funcionando corretamente.
Requisitos
- Você deve usar o comando
pgreppara encontrar o PID do processo que executa ocritical_service.sh. - O comando deve localizar com sucesso o processo em execução e exibir seu PID.
Exemplos
Após encontrar o PID com o pgrep, você verá uma saída como:
1235
Este número (1235 neste exemplo) é o ID do Processo do serviço crítico.
Você pode verificar os detalhes do processo usando:
ps -p 1235 -o pid,ppid,cmd
O que deve mostrar uma saída semelhante a:
PID PPID CMD
1235 1 /bin/bash /home/labex/project/critical_service.sh
Dicas
- O
pgreppode encontrar um PID com base no nome de um processo. - Use
pgrep -fpara realizar a correspondência contra a linha de comando completa.
Encerrando um Processo Problemático
Agora que você identificou os processos chave, é hora de lidar com o resource_hog.sh que está deixando o servidor lento. Você precisa encerrar este processo para restaurar a operação normal.
Tarefas
- Encerre o processo
resource_hog.sh.
Requisitos
- Você deve usar um comando que possa encerrar um processo com base em seu nome, sem a necessidade de encontrar seu PID primeiro.
- Use o comando
pkillpara parar o scriptresource_hog.sh.
Exemplos
Para verificar se o processo foi encerrado, você pode checar a lista de processos depois. Antes do encerramento, você veria:
labex 1234 95.0 0.0 2324 564 pts/0 R+ 09:15 5:00 bash /home/labex/project/resource_hog.sh
Após o encerramento bem-sucedido, executar o mesmo comando de verificação não deve mostrar processos correspondentes (apenas o próprio comando grep):
labex 2345 0.0 0.0 2324 564 pts/0 S+ 09:20 0:00 grep resource_hog
Dicas
- O comando
pkillenvia um sinal de encerramento para processos com base em seus nomes. - Após executar o comando, você pode usar
ps aux | grep resource_hogpara verificar se o processo não está mais em execução.
Iniciando e Gerenciando Processos em Segundo Plano
O servidor está estável novamente! Excelente trabalho. Justo quando você estava prestes a fazer uma pausa, um desenvolvedor lhe envia uma mensagem. Eles precisam que você execute um script de longa duração, o data_processor.sh, no servidor. Você não pode manter sua sessão de terminal aberta por horas apenas para este script. Você precisa executá-lo em segundo plano para que ele continue mesmo depois que você sair do sistema.
Tarefas
- Inicie o script
data_processor.shde modo que ele seja executado em segundo plano e seja imune a desconexões (ou seja, não pare se você fechar o terminal).
Requisitos
- Você deve estar no diretório
~/project. - Use o comando
nohuppara executar o script. - Use o operador
¶ enviar o processo para o segundo plano. - Redirecione toda a saída (tanto a saída padrão quanto o erro padrão) do script para um arquivo chamado
processor.log.
Exemplos
Após iniciar o script com sucesso em segundo plano, você verá uma saída semelhante a:
[1] 3456
nohup: ignoring input and appending output to 'processor.log'
O [1] 3456 indica o número do trabalho (job) e o ID do processo. Você pode verificar se o script está rodando checando o arquivo de log:
cat processor.log
Isso pode mostrar algo como:
Starting data processing at Mon Sep 11 10:30:00 UTC 2025
E você pode confirmar que o processo ainda está ativo:
ps aux | grep data_processor
O que deve mostrar que o processo em segundo plano está em execução.
Dicas
- O comando
nohupsignifica "no hang up" (não desligar). - O símbolo
&ao final de um comando diz ao shell para executá-lo como uma tarefa de segundo plano. - Você pode redirecionar a saída padrão com
>e o erro padrão com2>&1.
Resumo
Parabéns, Administrador! Você navegou com sucesso por um problema crítico de desempenho do servidor e demonstrou seu domínio no gerenciamento de processos Linux. O servidor está estável, os serviços críticos estão priorizados e as tarefas de longa duração estão operando tranquilamente em segundo plano.
Neste desafio, você provou sua capacidade de:
- Listar e inspecionar todos os processos em execução usando
ps. - Monitorar recursos do sistema em tempo real com o
top. - Identificar processos importantes usando o
pgrep. - Encerrar processos problemáticos de forma limpa com o
pkill. - Executar e gerenciar tarefas em segundo plano que persistem após o logout usando
nohupe&.
Estas são habilidades fundamentais e de alto valor, essenciais para qualquer função em administração de sistemas, DevOps ou desenvolvimento backend. Você transformou uma crise potencial em uma oportunidade para demonstrar sua expertise. Bom trabalho!



