TL;DR — Resumo Rápido
Domine o gerenciamento de sessões tmux para servidores remotos. Aprenda sessões persistentes, painéis, configuração, plugins e fluxos de trabalho práticos.
Se você já perdeu horas de trabalho porque uma conexão SSH caiu no meio de um deploy, ou se encontrou gerenciando uma dúzia de janelas de terminal para monitorar um servidor remoto, o tmux é a ferramenta que resolve ambos os problemas permanentemente. O tmux (multiplexador de terminal) executa um processo servidor persistente no host remoto — suas sessões, painéis e comandos em execução sobrevivem a desconexões, reinicializações da sua máquina local e falhas de rede. Este guia cobre tudo: instalação, a hierarquia sessão-janela-painel, cada atalho essencial, um ~/.tmux.conf pronto para produção, o ecossistema de plugins, scripts de ambientes automatizados e três fluxos de trabalho práticos de DevOps.
Pré-requisitos
Antes de começar, você precisa de:
- Um sistema Linux ou macOS com acesso ao terminal (local ou via SSH)
- Privilégios
sudopara instalação - Familiaridade básica com a linha de comando
- Um cliente SSH se trabalhar com servidores remotos
Por Que tmux? Os Casos de Uso Principais
Três cenários tornam o tmux indispensável para trabalho em servidores remotos:
Sobreviver a desconexões SSH. Quando sua operadora falha ou você fecha a tampa do notebook, qualquer processo em execução em um terminal SSH simples morre. Com tmux, a sessão continua no servidor. Seu rsync, ansible-playbook ou npm run build de longa duração continua executando. Você reconecta e se reanexação.
Fluxos de trabalho com múltiplos painéis. Um deploy típico pode envolver monitorar logs em um painel, executar scripts de migração em outro e ter um shell pronto para comandos de rollback em um terceiro — tudo em uma única conexão SSH.
Programação em par. Dois engenheiros podem conectar via SSH ao mesmo servidor e se anexar à mesma sessão tmux. Ambos veem e interagem com o mesmo terminal em tempo real.
Instalação
O tmux está disponível nos repositórios padrão de todas as distribuições principais.
Ubuntu/Debian:
sudo apt update && sudo apt install -y tmux
Fedora/RHEL/CentOS:
sudo dnf install -y tmux
Arch Linux:
sudo pacman -S tmux
macOS (Homebrew):
brew install tmux
Verificar:
tmux -V
# tmux 3.4
Qualquer versão 3.0 ou posterior suporta todos os recursos deste guia.
Conceitos Principais: Sessões, Janelas e Painéis
A hierarquia do tmux tem três níveis:
Sessão — O contêiner mais externo. Um espaço de trabalho independente e nomeado. Você pode ter muitas sessões executando simultaneamente: trabalho, deploy, monitor. As sessões persistem mesmo quando você não está conectado.
Janela — Vive dentro de uma sessão. Ocupa a tela inteira, como uma aba do navegador. Cada sessão pode ter múltiplas janelas. A barra de status na parte inferior mostra todas as janelas.
Painel — Uma subdivisão de uma janela. Você divide uma janela horizontal ou verticalmente para criar múltiplos painéis, cada um executando seu próprio shell ou comando.
servidor tmux (persistente no host remoto)
|
+-- Sessão: "trabalho"
| +-- Janela 0: "editor"
| | +-- Painel 0: vim src/app.py
| | +-- Painel 1: python -m pytest
| +-- Janela 1: "logs"
| +-- Painel 0: tail -f /var/log/app.log
|
+-- Sessão: "deploy"
+-- Janela 0: "principal"
+-- Painel 0: ansible-playbook deploy.yml
A tecla prefixo sinaliza ao tmux que o próximo pressionamento de tecla é um comando. O prefixo padrão é Ctrl+b.
Atalhos Essenciais
Referência completa para uso diário do tmux (prefixo padrão Ctrl+b):
| Ação | Atalho |
|---|---|
| Sessões | |
| Desanexar da sessão | Ctrl+b d |
| Listar e mudar sessões | Ctrl+b s |
| Renomear sessão atual | Ctrl+b $ |
| Sessão anterior | Ctrl+b ( |
| Próxima sessão | Ctrl+b ) |
| Janelas | |
| Criar nova janela | Ctrl+b c |
| Renomear janela atual | Ctrl+b , |
| Próxima janela | Ctrl+b n |
| Janela anterior | Ctrl+b p |
| Ir para janela por número | Ctrl+b 0-9 |
| Listar e selecionar janelas | Ctrl+b w |
| Fechar janela atual | Ctrl+b & |
| Painéis | |
| Dividir verticalmente | Ctrl+b % |
| Dividir horizontalmente | Ctrl+b " |
| Navegar entre painéis | Ctrl+b ←↑↓→ |
| Ciclar entre painéis | Ctrl+b o |
| Mostrar números dos painéis | Ctrl+b q |
| Zoom do painel (tela cheia) | Ctrl+b z |
| Trocar com painel anterior | Ctrl+b { |
| Trocar com próximo painel | Ctrl+b } |
| Converter painel em janela | Ctrl+b ! |
| Fechar painel atual | Ctrl+b x |
| Ciclar layouts | Ctrl+b Space |
| Modo Cópia | |
| Entrar no modo cópia | Ctrl+b [ |
| Colar buffer | Ctrl+b ] |
| Sair do modo cópia | q |
| Outros | |
| Prompt de comando | Ctrl+b : |
| Listar todos os atalhos | Ctrl+b ? |
| Recarregar config | Ctrl+b r |
Gerenciamento de Sessões
Criar Sessões
# Nova sessão sem nome
tmux
# Nova sessão nomeada (sempre prefira isso)
tmux new -s trabalho
# Sessão executando um comando específico
tmux new -s logs "tail -f /var/log/syslog"
# Sessão em um diretório específico
tmux new -s api -c /var/www/api
Listar e Mudar de Sessão
tmux ls
# Saída de exemplo:
# deploy: 2 janelas (criada dom mar 22 09:15:22 2026)
# monitor: 1 janelas (criada dom mar 22 08:30:15 2026) (anexada)
# trabalho: 3 janelas (criada dom mar 22 07:45:00 2026)
Anexar e Desanexar
# Desanexar (sessão continua executando): Ctrl+b d
# Anexar à sessão mais recente
tmux attach
# Anexar a uma sessão específica
tmux attach -t trabalho
# Anexar e desanexar outros clientes
tmux attach -t trabalho -d
Renomear e Encerrar Sessões
tmux rename-session -t nome-antigo nome-novo
tmux kill-session -t deploy
tmux kill-session -a
tmux kill-server
Gerenciamento de Janelas
# Criar nova janela: Ctrl+b c
# Renomear janela atual: Ctrl+b ,
# Ir para janela 0: Ctrl+b 0
# Próxima/anterior: Ctrl+b n / Ctrl+b p
# Listar janelas: Ctrl+b w
# Fechar janela: Ctrl+b &
Gerenciamento de Painéis
Dividir Painéis
# Divisão vertical (painéis lado a lado): Ctrl+b %
# Divisão horizontal (painéis empilhados): Ctrl+b "
Redimensionar Painéis
# Redimensionamento fino: Ctrl+b, depois Ctrl + seta
# Redimensionamento via prompt de comando (Ctrl+b :):
resize-pane -D 10 # Baixo 10 linhas
resize-pane -U 10 # Cima 10 linhas
resize-pane -L 20 # Esquerda 20 colunas
resize-pane -R 20 # Direita 20 colunas
Layouts de Painéis
Tmux tem cinco layouts integrados que você pode ciclar com Ctrl+b Space:
even-horizontal— painéis lado a lado, largura igualeven-vertical— painéis empilhados, altura igualmain-horizontal— um painel grande no topo, painéis menores abaixomain-vertical— um painel grande à esquerda, painéis menores à direitatiled— painéis em grade
Separar e Juntar Painéis
# Converter painel em sua própria janela: Ctrl+b !
# Juntar um painel de outra janela (via Ctrl+b :)
join-pane -s 2.0 # Mover painel 0 da janela 2 para a janela atual
join-pane -t 3 # Mover painel atual para a janela 3
Modo Cópia
O modo cópia fornece acesso completo ao buffer de rolagem com busca e seleção de texto.
Entrar no Modo Cópia e Navegar
# Entrar no modo cópia
Ctrl+b [
# Navegar
Teclas de seta # Mover cursor
PgUp / PgDn # Rolar por página
g # Ir ao início do buffer
G # Ir ao final do buffer
/termo # Buscar para frente
?termo # Buscar para trás
n / N # Próxima / anterior coincidência
q # Sair
Modo Vi (Recomendado)
Adicione ao ~/.tmux.conf:
setw -g mode-keys vi
bind -T copy-mode-vi v send-keys -X begin-selection
bind -T copy-mode-vi y send-keys -X copy-selection-and-cancel
No modo cópia:
v # Iniciar seleção
y # Copiar seleção
Ctrl+b ] # Colar
Configuração Personalizada ~/.tmux.conf
Configuração Inicial Completa
# ~/.tmux.conf
# Prefixo
unbind C-b
set -g prefix C-a
bind C-a send-prefix
# Mouse
set -g mouse on
# Cores
set -g default-terminal "screen-256color"
set -ga terminal-overrides ",xterm-256color:Tc"
# Buffer de rolagem
set -g history-limit 50000
# Modo vi
setw -g mode-keys vi
bind -T copy-mode-vi v send-keys -X begin-selection
bind -T copy-mode-vi y send-keys -X copy-selection-and-cancel
# Indexação
set -g base-index 1
setw -g pane-base-index 1
set -g renumber-windows on
# Sem atraso de escape
set -sg escape-time 0
# Divisões de painel
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
unbind '"'
unbind %
# Recarregar
bind r source-file ~/.tmux.conf \; display-message "Config recarregada"
# Barra de status
set -g status-position bottom
set -g status-style "bg=#1a1b26,fg=#a9b1d6"
set -g status-left "#[fg=#06b6d4,bold] #S "
set -g status-left-length 30
set -g status-right "#[fg=#a9b1d6] %Y-%m-%d %H:%M "
setw -g window-status-format " #I:#W "
setw -g window-status-current-format "#[fg=#06b6d4,bold] #I:#W* "
Tmux Plugin Manager (tpm) e Plugins Essenciais
Instalar tpm
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
Adicione ao final do ~/.tmux.conf:
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'
run '~/.tmux/plugins/tpm/tpm'
Pressione Ctrl+a I para instalar os plugins.
tmux-resurrect
Salva e restaura sessões tmux após reinicializações do servidor.
# Salvar sessão: Ctrl+a Ctrl+s
# Restaurar sessão: Ctrl+a Ctrl+r
tmux-continuum
set -g @continuum-restore 'on'
set -g @continuum-save-interval '15'
Scripting com tmux
Ambiente de Desenvolvimento com 4 Painéis
#!/usr/bin/env bash
# ambiente-dev.sh
SESSION="dev"
tmux has-session -t "$SESSION" 2>/dev/null && tmux attach -t "$SESSION" && exit
tmux new-session -d -s "$SESSION" -n "editor" -c ~/projetos/api
tmux split-window -h -t "$SESSION:editor" -c ~/projetos/api
tmux split-window -v -t "$SESSION:editor.0" -c ~/projetos/api
tmux split-window -v -t "$SESSION:editor.1" -c ~/projetos/api
tmux select-layout -t "$SESSION:editor" tiled
tmux send-keys -t "$SESSION:editor.0" "vim ." Enter
tmux send-keys -t "$SESSION:editor.1" "npm run dev" Enter
tmux send-keys -t "$SESSION:editor.2" "npm run test -- --watch" Enter
tmux send-keys -t "$SESSION:editor.3" "git log --oneline -10" Enter
tmux new-window -t "$SESSION" -n "logs" -c ~/projetos/api
tmux send-keys -t "$SESSION:logs" "tail -f logs/app.log" Enter
tmux select-window -t "$SESSION:editor"
tmux select-pane -t "$SESSION:editor.0"
tmux attach -t "$SESSION"
tmux vs Screen vs Zellij vs Byobu
| Recurso | tmux | GNU Screen | Zellij | Byobu |
|---|---|---|---|---|
| Divisões verticais | Integradas | Requer patch | Integradas | Via tmux/screen |
| Sintaxe de configuração | Limpa | Complexa | YAML/KDL | tmux simplificado |
| Ecossistema de plugins | Maduro (tpm) | Mínimo | Crescente | Herda do tmux |
| Suporte a scripts | Excelente | Limitado | Moderado | Limitado |
| Suporte a mouse | Excelente | Limitado | Excelente | Excelente |
| Persistência após reinicialização | Com tmux-resurrect | Não | Não | Com tmux-resurrect |
| Desenvolvimento ativo | Sim | Mínimo | Sim (Rust) | Mínimo |
| Melhor para | Usuários avançados, DevOps | Sistemas legados | Novos usuários | Início rápido |
Fluxos de Trabalho Práticos
Deploy de Longa Duração
ssh deploy@prod-01.exemplo.com
tmux new -s migracao
./scripts/executar-migracoes.sh
# Desanexar: Ctrl+a d
exit
# Horas depois
ssh deploy@prod-01.exemplo.com
tmux attach -t migracao
Dashboard de Monitoramento
+---------------------------+---------------------------+
| | |
| Painel 0: htop | Painel 1: df -h (watch) |
| | |
+---------------------------+---------------------------+
| | |
| Painel 2: tail syslog | Painel 3: netstat |
| | |
+---------------------------+---------------------------+
Resumo
O tmux resolve os dois problemas fundamentais do trabalho em servidores remotos: persistência de sessões e organização do terminal. Pontos principais:
- Sessões sobrevivem a quedas de SSH — desanexe com
Ctrl+a d, reconecte e usetmux attach -t nome - Hierarquia de três níveis — sessões contêm janelas, janelas contêm painéis
- Tecla prefixo —
Ctrl+bpor padrão,Ctrl+arecomendado no~/.tmux.conf - Zoom (
Ctrl+b z) — maximiza temporariamente um painel sem perder o layout - Modo cópia (
Ctrl+b [) — rolagem, busca e cópia sem sair do tmux - Plugins tpm — tmux-resurrect salva sessões após reinicializações, tmux-continuum salva automaticamente
- Automatize tudo — use
tmux new-session,split-window,send-keyseselect-layout