Controle absoluto do terminal. Um post DevData.
1. Enviar um processo para o segundo plano
Método A — Executando diretamente no background
./script.sh &
O shell responde com:
[1] 12345
[1]→ número do job12345→ PID do processo- O terminal fica livre para novos comandos.
Método B — Suspender e enviar ao background depois
Execute normalmente:
./script.sh
Depois pressione Ctrl + Z. Isso suspende o processo:
[1]+ Stopped ./script.sh
Agora, envie para segundo plano com:
bg
O processo volta a rodar, mas no segundo plano.
2. Trazer um processo de volta para o primeiro plano
Se o processo foi enviado com &, ou por bg, use:
jobs
Resultado esperado:
[1]+ Running ./script.sh &
Agora traga com:
fg %1
%1é o número do job. O símbolo%é obrigatório.
3. Comandos rápidos para controle total
| Ação | Comando |
|---|---|
| Ver processos controlados pelo shell | jobs |
| Enviar processo suspenso para bg | bg |
| Trazer processo para o fg | fg %n |
| Suspender processo em execução | Ctrl + Z |
| Matar processo em segundo plano | kill %n |
| Desassociar processo do shell | disown %n |
4. Observações importantes
fg,bg,jobs,disown, etc., só funcionam com processos da sessão atual do terminal.- Se o terminal for fechado, os processos em segundo plano são encerrados, a menos que você use:
nohuptmuxscreensetsid
Se quiser garantir que o processo sobreviva à sessão, use:
nohup ./script.sh &
Ou trabalhe de forma profissional com tmux/screen.
5. Para os inquietos: o PID não resolve aqui
Você não usa o PID com fg. O comando fg trabalha com o número do job, identificado por %n.
Finalizando
Dominar o fg, bg e o controle de jobs é coisa de quem usa o shell de verdade. Com esses comandos, você evita perder tempo, mantém seu terminal limpo e sua produtividade em alta.
E se você chegou até aqui, provavelmente já está mais shell do que muito sysadmin por aí.
