Pular para o conteúdo principal

Capítulo 4.6 - Jobs e Tarefas em Segundo Plano

Objetivos de Aprendizagem​

Ao final deste capítulo, você será capaz de:

  • Iniciar processos em segundo plano
  • Gerenciar jobs com jobs, fg, bg
  • Usar nohup para processos persistentes
  • Entender screen e tmux
  • Gerenciar processos após desconexão

Processos em Segundo Plano​

Iniciando com &​

# Processo em segundo plano
comando &

# Exemplo
sleep 60 &
tail -f /var/log/app.log &

# Ver o PID
echo $! # PID do último processo em segundo plano

Redirecionamento​

# Redirecionar saída
comando > output.log 2>&1 &

# Ignorar saída
comando > /dev/null 2>&1 &

# Exemplo
long_script.sh > script.log 2>&1 &

Gerenciamento de Jobs​

jobs - Ver os Jobs​

# Listar jobs
jobs

# Com PIDs
jobs -l

# Jobs finalizados também
jobs -a

# Formato:
# [1] + running sleep 60 &
# [2] - running tail -f log &
# Número, estado, comando

fg - Primeiro Plano​

# Último job em primeiro plano
fg

# Job específico
fg %1
fg %2
fg %nome

# Com Ctrl+Z, o processo é suspenso
# Depois fg o traz de volta ao primeiro plano

bg - Segundo Plano​

# Último job suspenso em segundo plano
bg

# Job específico
bg %1
bg %2

nohup - Ignorar SIGHUP​

Problema​

Quando você se desconecta, o shell envia SIGHUP para todos os seus processos filhos, matando-os.

Solução: nohup​

# Ignorar SIGHUP
nohup comando &

# Com redirecionamento
nohup comando > output.log 2>&1 &

# O arquivo nohup.out é criado automaticamente
# se não houver redirecionamento

Características:

  • Processo continua após desconexão
  • Saída em nohup.out (padrão)
  • Pode ser redirecionada

screen - Sessões Persistentes​

Instalação​

sudo apt install screen  # Ubuntu/Debian
sudo yum install screen # Red Hat/CentOS

Uso Básico​

# Iniciar uma sessão
screen
screen -S nome_sessao # Com nome

# Destacar: Ctrl+A depois D
# Reconectar: screen -r
# Reconectar sessão nomeada: screen -r nome_sessao

# Listar sessões
screen -ls

# Encerrar sessão
screen -X -S nome_sessao quit

Comandos do screen (Ctrl+A)​

Ctrl+A depois:
d # Destacar
c # Nova janela
n # Próxima janela
p # Janela anterior
" # Lista de janelas
? # Ajuda

tmux - Multiplexador de Terminal Moderno​

Instalação​

sudo apt install tmux  # Ubuntu/Debian
sudo yum install tmux # Red Hat/CentOS

Uso Básico​

# Iniciar sessão
tmux
tmux new -s nome_sessao

# Destacar: Ctrl+B depois D
# Reconectar: tmux attach
# Reconectar sessão: tmux attach -t nome_sessao

# Listar sessões
tmux ls

# Encerrar sessão
tmux kill-session -t nome_sessao

Comandos do tmux (Ctrl+B)​

Ctrl+B depois:
d # Destacar
c # Nova janela
n # Próxima janela
p # Janela anterior
% # Divisão vertical
" # Divisão horizontal
? # Ajuda

Comparação​

FerramentaUsoVantagens
&Segundo plano simplesSimples, rápido
nohupProcessos persistentesContinua após desconexão
screenSessões de terminalMúltiplas janelas, destacável
tmuxTerminal modernoMais recursos que o screen

Exemplos Práticos​

Cenário 1: Script Longo​

# Iniciar em segundo plano com nohup
nohup long_script.sh > script.log 2>&1 &

# Desconectar
# O script continua

Cenário 2: Sessão de Trabalho​

# Iniciar screen
screen -S trabalho

# Rodar vários comandos
# Destacar: Ctrl+A D

# Reconectar depois
screen -r trabalho

Cenário 3: Monitoramento Contínuo​

# No screen/tmux
watch -n 1 'ps aux --sort=-%cpu | head'

# Destacar e reconectar quando necessário

Resumo​

Neste capítulo, você aprendeu:

Segundo plano: comando & para iniciar em segundo plano
Jobs: jobs, fg, bg para gerenciar jobs
nohup: Ignorar SIGHUP, processos persistentes
screen: Sessões de terminal destacáveis
tmux: Multiplexador de terminal moderno
Prática: Escolher conforme a necessidade (simples vs sessões)


Próximos Passos​

Módulo 5: Usuários e Permissões
Módulo 6: Shell Script


Capítulo criado em: Dezembro 2024