1. Por que tmux
SSH cai. Comando longo morre junto. Tmux mantém a sessão no servidor: você reconecta e continua de onde parou.
2. Sessões e atalhos
tmux new -s deploy
tmux ls
tmux attach -t deploy
# prefix: Ctrl+b
# Ctrl+b d → detach
# Ctrl+b c → nova janela
# Ctrl+b % → split vertical
3. Fluxo em produção
ssh user@servidor
tmux attach -t ops || tmux new -s ops
# trabalho...
# Ctrl+b d
4. E no Windows?
Em servidores Windows, prefira serviços ou o Agendador para jobs longos. Para trabalho interativo remoto, SSH + tmux em um host Linux intermediário continua sendo o caminho mais estável.
5. Checklist
- Sessão nomeada por tarefa
- Detach antes de fechar o terminal local
- Não rodar como root sem necessidade
6. Comandos e atalhos explicados
| Comando ou atalho | O que faz |
|---|---|
tmux new -s deploy | Cria uma sessão chamada deploy. |
tmux ls | Lista as sessões ativas. |
tmux attach -t deploy | Reconecta à sessão deploy. |
tmux attach -t ops || tmux new -s ops | Tenta reconectar e, se a sessão não existir, cria. O || só executa a segunda parte se a primeira falhar. |
Ctrl+b d | Sai da sessão sem encerrá-la (detach). O programa continua rodando. |
Ctrl+b c | Abre uma nova janela na sessão. |
Ctrl+b % | Divide o painel em dois, lado a lado. |
O Ctrl+b é o prefixo: pressione, solte e só depois digite a tecla do atalho. Outros atalhos úteis:
| Atalho | O que faz |
|---|---|
Ctrl+b " | divide o painel em cima e embaixo |
Ctrl+b e uma seta | move o foco entre painéis |
Ctrl+b n / Ctrl+b p | próxima e anterior janela |
Ctrl+b [ | modo de rolagem e cópia (q sai) |
Ctrl+b x | fecha o painel atual, com confirmação |
tmux kill-session -t nome | encerra a sessão de vez |
7. Exemplo: um comando longo que sobrevive à queda da conexão
ssh deploy@servidor
tmux new -s migracao
./migrar-dados.sh
# a conexão cai no meio da migração...
ssh deploy@servidor
tmux attach -t migracaoAo reconectar, o migrar-dados.sh continua do ponto em que estava, com toda a saída na tela, porque o processo pertence à sessão do tmux e não à conexão SSH.
8. Erros comuns
| Sintoma | Causa provável | Solução |
|---|---|---|
| A mensagem "no sessions" | A sessão não existe, ou o servidor foi reiniciado. Sessões do tmux não sobrevivem a reboot. | Crie uma nova com tmux new -s nome. Para jobs que precisam durar, use um serviço do systemd. |
| Os atalhos não funcionam | O Ctrl+b foi apertado junto com a segunda tecla. | Solte o Ctrl+b antes de digitar a tecla do atalho. |
| Não consigo rolar a tela | A rolagem normal do terminal não enxerga o histórico do tmux. | Entre no modo de cópia com Ctrl+b [ e use as setas ou PgUp. |
| A sessão está confusa | Tudo foi aberto em uma única sessão. | Use uma sessão por contexto (ops, logs, db) e evite abrir tmux dentro de tmux. |