Os Bastidores do Servidor: Gerenciando Processos, Tarefas e Agendamentos
Quando você usa seu computador, vários programas rodam ao mesmo tempo, mesmo que você não os veja. No Linux, cada um desses programas em execução é chamado de processo.
Pense no seu servidor como uma fábrica robótica automatizada. Cada processo é um "robô operário" executando uma tarefa específica: o robô do servidor web, o robô do banco de dados, o robô do sistema de logs, etc.
Sua missão como "Gerente de Turno" é saber como usar o painel de controle para ver o que todos os robôs estão fazendo, intervir quando um deles apresentar defeito e agendar tarefas para serem executadas no futuro.
Parte 1: O Painel de Controle (Visualizando os Robôs)
Antes de gerenciar, você precisa enxergar. Estas são suas câmeras de segurança.
-
ps
(Process Status): A Foto Instantânea- Analogia: Tira uma "foto" de todos os robôs que estão trabalhando no exato momento em que você executa o comando.
Hack de Mestre: O comando
ps
sozinho é pouco útil. A combinação que você usará 99% do tempo éps aux
.a
: Mostra os processos de todos (all) os usuários.u
: Mostra os processos em um formato um pouco mais detalhado.x
: Mostra também os processos que não estão atrelados a um terminal (os "daemons").
- Dor que Resolve: "Será que o meu programa
meu_app
está rodando?". Useps aux | grep meu_app
.
-
top
: O Monitoramento Ao Vivo- Analogia: É a "transmissão ao vivo das câmeras de segurança" da sua fábrica.
- O que faz? Mostra uma lista de processos que se atualiza em tempo real, ordenada por padrão por uso de CPU. É o "Gerenciador de Tarefas" do Linux.
- Dor que Resolve: "Minha instância EC2 está lenta e com a CPU em 100%! Qual robô está consumindo todos os recursos?" O
top
te mostra o culpado no topo da lista. - Como Usar: Digite
top
. Para sair, pressione a teclaq
.
Parte 2: Gerenciando os Robôs em Tempo Real
Às vezes, um robô trava ou precisa de um "empurrãozinho".
-
kill
: O Botão de Desligamento de Emergência- Analogia: Envia um "sinal" para um robô específico (identificado pelo seu PID - Process ID).
- A Dor que Resolve: Um programa travou e não responde mais.
- Os Sinais Mais Importantes:
kill -15 [PID]
: O "pedido educado". Envia o sinal SIGTERM, pedindo para o processo se encerrar de forma organizada (salvar arquivos, fechar conexões). Sempre tente este primeiro!kill -9 [PID]
: O "corte do cabo de energia". Envia o sinal SIGKILL, que força o encerramento imediato e incondicional do processo. É o último recurso, pois pode corromper dados.
-
nice
erenice
: O Botão de Prioridade- Analogia: Ajusta a "prioridade" de um robô na fila de tarefas do Chef (Kernel). O valor vai de
-20
(prioridade máxima) a19
(prioridade mínima, mais "bonzinho"). - Dor que Resolve: "Preciso rodar uma tarefa de análise de dados que consome muita CPU, mas não quero que ela deixe o meu site lento." Você pode iniciá-la com
nice -n 10 minha_analise.sh
para que ela rode com baixa prioridade.
- Analogia: Ajusta a "prioridade" de um robô na fila de tarefas do Chef (Kernel). O valor vai de
-
jobs
,fg
,bg
: Gerenciando Tarefas na Sua Bancada- Analogia: Gerenciar os robôs que estão trabalhando na sua frente (foreground) ou no fundo da fábrica (background).
fg
(foreground): Traz um robô do fundo da fábrica para a sua bancada.bg
(background): Manda um robô da sua bancada trabalhar no fundo da fábrica.Ctrl + Z
: Pausa o robô que está na sua frente e o coloca em "stand-by".&
(no final de um comando): Já inicia a tarefa diretamente no fundo da fábrica. Ex:sleep 300 &
.
Dica de Certificação: Entender a diferença brutal entre
kill -15
(o jeito certo) ekill -9
(o último recurso) é um conceito de segurança e estabilidade muito cobrado.
Parte 3: O Piloto Automático (Agendando Tarefas)
A verdadeira automação acontece quando você ensina os robôs a trabalharem sozinhos em horários específicos.
-
at
: Agendar uma Tarefa Única- Analogia: "Robô #123, por favor, execute o script de backup hoje às 23:00 e só."
- Dor que Resolve: A necessidade de executar um comando demorado mais tarde, sem precisar ficar na frente do terminal esperando.
-
cron
: O Agendador de Tarefas Recorrentes- Analogia: "Robôs de limpeza, por favor, executem a rotina de limpeza todos os dias às 03:00 da manhã."
- O que é? O
cron
é um daemon (um "robô de apoio") que lê um arquivo de agendamento chamadocrontab
e executa as tarefas na hora certa. - Dor que Resolve: A necessidade de automatizar tarefas repetitivas: backups diários, limpeza de logs semanal, relatórios mensais, etc.
Editando o Quadro de Agendamento (crontab -e
)
Para agendar uma tarefa cron
, você edita o arquivo crontab
do seu usuário com o comando crontab -e
. Cada linha é uma nova tarefa e segue o formato:
MIN HOR DIA MÊS DIA_SEMANA /caminho/para/o/comando
Campo | Valores | Exemplo (* ) |
---|---|---|
MIN | Minuto (0-59) | * = todo minuto |
HOR | Hora (0-23) | * = toda hora |
DIA | Dia do Mês (1-31) | * = todo dia do mês |
MÊS | Mês (1-12) | * = todo mês |
DSE | Dia da Semana (0-6, 0=Domingo) | * = todo dia da semana |
HACK PARA CERTIFICAÇÃO: A sintaxe do crontab é um clássico dos exames! *
0 2 * * * /scripts/backup.sh
-> Roda o backup todos os dias, às 02:00 da manhã. **/15 * * * * /scripts/monitor.sh
-> Roda o monitoramento a cada 15 minutos.