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 sudo para 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çãoAtalho
Sessões
Desanexar da sessãoCtrl+b d
Listar e mudar sessõesCtrl+b s
Renomear sessão atualCtrl+b $
Sessão anteriorCtrl+b (
Próxima sessãoCtrl+b )
Janelas
Criar nova janelaCtrl+b c
Renomear janela atualCtrl+b ,
Próxima janelaCtrl+b n
Janela anteriorCtrl+b p
Ir para janela por númeroCtrl+b 0-9
Listar e selecionar janelasCtrl+b w
Fechar janela atualCtrl+b &
Painéis
Dividir verticalmenteCtrl+b %
Dividir horizontalmenteCtrl+b "
Navegar entre painéisCtrl+b ←↑↓→
Ciclar entre painéisCtrl+b o
Mostrar números dos painéisCtrl+b q
Zoom do painel (tela cheia)Ctrl+b z
Trocar com painel anteriorCtrl+b {
Trocar com próximo painelCtrl+b }
Converter painel em janelaCtrl+b !
Fechar painel atualCtrl+b x
Ciclar layoutsCtrl+b Space
Modo Cópia
Entrar no modo cópiaCtrl+b [
Colar bufferCtrl+b ]
Sair do modo cópiaq
Outros
Prompt de comandoCtrl+b :
Listar todos os atalhosCtrl+b ?
Recarregar configCtrl+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:

  1. even-horizontal — painéis lado a lado, largura igual
  2. even-vertical — painéis empilhados, altura igual
  3. main-horizontal — um painel grande no topo, painéis menores abaixo
  4. main-vertical — um painel grande à esquerda, painéis menores à direita
  5. tiled — 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

RecursotmuxGNU ScreenZellijByobu
Divisões verticaisIntegradasRequer patchIntegradasVia tmux/screen
Sintaxe de configuraçãoLimpaComplexaYAML/KDLtmux simplificado
Ecossistema de pluginsMaduro (tpm)MínimoCrescenteHerda do tmux
Suporte a scriptsExcelenteLimitadoModeradoLimitado
Suporte a mouseExcelenteLimitadoExcelenteExcelente
Persistência após reinicializaçãoCom tmux-resurrectNãoNãoCom tmux-resurrect
Desenvolvimento ativoSimMínimoSim (Rust)Mínimo
Melhor paraUsuários avançados, DevOpsSistemas legadosNovos usuáriosIní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 use tmux attach -t nome
  • Hierarquia de três níveis — sessões contêm janelas, janelas contêm painéis
  • Tecla prefixoCtrl+b por padrão, Ctrl+a recomendado 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-keys e select-layout

Artigos Relacionados