Pular para o conteúdo principal

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​

SinalNúmeroAção
SIGHUP1Hang up (recarregar config)
SIGINT2Interromper (Ctrl+C)
SIGQUIT3Sair (core dump)
SIGTERM15Finalizar (gracioso)
SIGKILL9Kill (forçado, não pode ser ignorado)
SIGSTOP19Parar (suspender)
SIGCONT18Continuar (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