1. O Problema que o Tmux Resolve
Quem trabalha com terminal no dia a dia esbarra cedo ou tarde no mesmo incômodo: uma conexão SSH cai e todo o trabalho em andamento — um build rodando, um editor aberto, logs sendo acompanhados — vai junto com ela. Ou então é preciso alternar constantemente entre vários comandos de longa duração (um servidor de desenvolvimento, um watcher de testes, um tail -f de log) e cada um exige sua própria janela de terminal, ocupando espaço e exigindo troca manual entre elas.
O tmux (Terminal Multiplexer) resolve exatamente isso: ele permite criar, organizar e — o mais importante — manter vivas múltiplas sessões de terminal, independentemente da conexão que as originou. Esta é a primeira parte de uma série que vai do básico ao avançado: hoje o foco é entender o que é o tmux, por que ele existe e como dar os primeiros passos.
2. O Que é um Terminal Multiplexer
Um multiplexador de terminal é um programa que roda como um processo único no servidor (ou máquina local) e, dentro dele, gerencia múltiplos "terminais virtuais" simultaneamente. A parte crucial é que esse processo continua rodando mesmo que o cliente que está olhando para ele feche a conexão. Isso é possível porque o tmux funciona em modelo cliente-servidor:
- O servidor tmux roda em segundo plano, mantendo todas as sessões, janelas e painéis vivos, com todo o estado (histórico de scroll, processos em execução, variáveis de ambiente) preservado.
- Um ou mais clientes tmux apenas se conectam a esse servidor para visualizar e interagir com as sessões — como uma "tela" que pode ser ligada e desligada sem afetar o que está sendo exibido.
Isso quer dizer que é possível abrir uma sessão, desconectar (detach), desligar o notebook, ir para outro lugar, abrir outro computador, reconectar (attach) na mesma sessão e encontrar tudo exatamente como estava — inclusive processos que continuaram rodando o tempo todo.
3. Conceitos Fundamentais: Sessões, Janelas e Painéis
O tmux organiza tudo em três níveis, do mais amplo para o mais específico:
-
Sessão (session): um agrupamento independente de trabalho, geralmente associado a um projeto ou contexto (ex.: uma sessão
deploy, outrablog). Cada sessão sobrevive independentemente das demais. - Janela (window): dentro de uma sessão, equivalente a uma aba de terminal. Uma sessão pode ter várias janelas, cada uma ocupando a tela inteira quando ativa.
- Painel (pane): uma janela pode ser dividida em múltiplos painéis lado a lado ou empilhados, cada um rodando seu próprio shell ou comando, visíveis ao mesmo tempo na tela.
Sessão "blog"
├── Janela 0: editor
│ ├── Painel 0: vim
│ └── Painel 1: git status
└── Janela 1: servidor
└── Painel 0: npm run dev
Essa hierarquia é o que permite organizar um fluxo de trabalho complexo sem depender de várias janelas separadas do emulador de terminal.
4. Instalando o Tmux
O tmux está disponível nos repositórios padrão da maioria das distribuições e gerenciadores de pacote:
# Debian/Ubuntu
sudo apt update && sudo apt install tmux
# Fedora
sudo dnf install tmux
# Arch Linux
sudo pacman -S tmux
# macOS (Homebrew)
brew install tmux
Depois de instalado, confirme a versão:
tmux -V
Versões mais recentes (3.x) trazem suporte a mais recursos de layout e integração com o mouse, usados nas próximas partes desta série — vale atualizar se a versão empacotada pela distribuição for muito antiga (2.x).
5. Primeiros Comandos: Criar, Sair, Desanexar e Reconectar
O comando mais simples possível é iniciar uma sessão sem nome:
tmux
Isso abre uma nova sessão e já entra nela. Mas o ideal, desde o início, é nomear as sessões — facilita muito reconectar depois:
tmux new -s blog
Dentro do tmux, praticamente todo comando é acionado por uma combinação de teclas chamada de prefixo, cujo padrão é Ctrl+b. Ou seja: solta-se Ctrl+b, depois pressiona-se a tecla do comando. Os primeiros comandos essenciais:
| Ação | Atalho |
|---|---|
| Desanexar da sessão (detach) |
Ctrl+b d
|
| Listar sessões |
Ctrl+b s
|
| Sair do painel/shell atual |
exit ou Ctrl+d
|
Fora do tmux, para ver e gerenciar sessões existentes:
# Listar todas as sessões ativas
tmux ls
# Reconectar à sessão "blog"
tmux attach -t blog
# Encerrar uma sessão sem entrar nela
tmux kill-session -t blog
O fluxo típico de uso, então, é: tmux new -s blog para começar, trabalhar normalmente, Ctrl+b d para desanexar quando for preciso sair, e tmux attach -t blog para voltar exatamente de onde parou — de qualquer terminal, em qualquer máquina que tenha acesso à mesma sessão.
6. Por Que Isso Importa no Dia a Dia
Sessão de tmux — Wikimedia Commons
O caso de uso mais citado é o de servidores remotos via SSH: iniciar uma sessão tmux logo após conectar, rodar tudo dentro dela, e se a conexão cair (rede instável, notebook fechado, VPN caindo), o trabalho continua intacto no servidor — basta reconectar e dar tmux attach. Processos de longa duração (deploys, migrações de banco, treinamentos de modelos) não são interrompidos por uma queda de conexão.
Mas o benefício vai além do SSH: mesmo localmente, o tmux permite manter um layout de painéis organizado (editor, logs, testes rodando) sem depender de múltiplas janelas do emulador de terminal, e alternar entre diferentes contextos de projeto trocando de sessão com um comando.
7. Conclusão e Próximos Passos
Nesta primeira parte, vimos o problema que o tmux resolve, o modelo cliente-servidor por trás dele, os três níveis de organização (sessões, janelas, painéis) e os comandos mínimos para criar, desanexar e reconectar a uma sessão. No próximo artigo, entramos na prática do dia a dia: navegação entre janelas e painéis, divisão e reorganização de layout, e os atalhos que realmente valem a pena decorar.
Imagem de capa: Logo do tmux, por Jason Long — Wikimedia Commons
Referências:
Top comments (0)