Capítulo 4.3 - Controle de Processos
Objetivos de Aprendizagem
Ao final deste capítulo, você será capaz de:
- Iniciar processos
- Parar e matar processos
- Suspender e retomar
- Gerenciar processos em segundo plano
- Entender sinais
Iniciar um Processo
Linha de Comando
# Processo em primeiro plano
comando
# Processo em segundo plano
comando &
# Exemplo
sleep 60 &
nohup - Ignorar SIGHUP
# Continuar após desconexão
nohup comando &
# Redirecionar a saída
nohup comando > output.log 2>&1 &
Parar um Processo
kill - Enviar um Sinal
# Sinal TERM (finalização graciosa)
kill PID
kill -TERM PID
kill -15 PID
# Sinal KILL (forçado)
kill -9 PID
kill -KILL PID
# Por nome
killall nome_processo
killall -9 nome_processo # Forçar
# Por padrão
pkill pattern
pkill -9 pattern
Sinais Comuns
| Sinal | Número | Ação |
|---|---|---|
| SIGHUP | 1 | Hang up (recarregar config) |
| SIGINT | 2 | Interromper (Ctrl+C) |
| SIGQUIT | 3 | Sair (core dump) |
| SIGTERM | 15 | Finalizar (gracioso) |
| SIGKILL | 9 | Kill (forçado, não pode ser ignorado) |
| SIGSTOP | 19 | Parar (suspender) |
| SIGCONT | 18 | Continuar (retomar) |
Suspender e Retomar
Suspender
# Enviar SIGSTOP
kill -STOP PID
kill -19 PID
# Ou com Ctrl+Z no terminal
# (suspende o processo em primeiro plano)
Retomar
# Enviar SIGCONT
kill -CONT PID
kill -18 PID
# Em primeiro plano
fg
# Em segundo plano
bg
Processos em Segundo Plano
jobs - Ver os Jobs
# Ver os jobs
jobs
# Com PIDs
jobs -l
# Jobs finalizados também
jobs -a
fg e bg
# Colocar em primeiro plano
fg
fg %1 # Job número 1
fg %nome # Job por nome
# Colocar em segundo plano
bg
bg %1
disown - Desanexar um Job
# Desanexar do terminal
disown %1
disown -h %1 # Não enviar SIGHUP
Exemplos Práticos
Cenário 1: Processo que não responde
# 1. Encontrar o PID
ps aux | grep processo
# 2. Tentar finalizar graciosamente
kill PID
# 3. Esperar alguns segundos
sleep 5
# 4. Se ainda estiver lá, forçar
kill -9 PID
Cenário 2: Processo em segundo plano
# Iniciar em segundo plano
long_script.sh &
# Ver os jobs
jobs
# Colocar em primeiro plano
fg %1
# Suspender (Ctrl+Z)
# Retomar em segundo plano
bg %1
Cenário 3: Processo que continua após desconexão
# Com nohup
nohup long_task.sh > output.log 2>&1 &
# Ou com screen/tmux
screen -S session
# Iniciar processo
# Desanexar: Ctrl+A depois D
# Reconectar: screen -r session
Sinais e seu Uso
SIGTERM (15) - Finalização Graciosa
kill -TERM PID
# O processo pode:
# - Salvar dados
# - Fechar arquivos
# - Limpar recursos
SIGKILL (9) - Finalização Forçada
kill -9 PID
# O processo:
# - Não pode ser ignorado
# - É morto imediatamente
# - Não há limpeza possível
Use apenas se SIGTERM não funcionar!
SIGHUP (1) - Recarregar Configuração
# Frequentemente usado para recarregar config
kill -HUP PID
# Exemplo: recarregar nginx
kill -HUP $(pidof nginx)
Resumo
Neste capítulo, você aprendeu:
Iniciar: comando, comando &, nohup
Parar: kill, killall, pkill com sinais
Sinais: TERM (gracioso), KILL (forçado), HUP (recarregar)
Suspender: SIGSTOP, Ctrl+Z
Retomar: SIGCONT, fg, bg
Segundo plano: jobs, fg, bg, disown
Próximos Passos
Capítulo 4.4: Prioridades e Nice Values
Capítulo 4.5: Processos e Recursos
Capítulo criado em: Dezembro 2024