DEV Community

Cover image for Tmux - O Que É, Para Que Serve e Primeiros Passos
Rafael Dutra for apsis-cc

Posted on • Edited on

Tmux - O Que É, Para Que Serve e Primeiros Passos

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, outra blog). 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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Depois de instalado, confirme a versão:

tmux -V
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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 real de tmux, com dois painéis horizontais e um vertical 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:

  1. tmux — Manual page
  2. tmux GitHub Wiki

Top comments (0)