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
| Ferramenta | Uso | Vantagens |
|---|---|---|
& | Segundo plano simples | Simples, rápido |
nohup | Processos persistentes | Continua após desconexão |
screen | Sessões de terminal | Múltiplas janelas, destacável |
tmux | Terminal moderno | Mais 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