TMUX — MULTIPLEXADOR DE TERMINAL Cliente SSH Maquina local ssh user@srv tmux attach SSH servidor tmux (persistente no host remoto) Sessao: trabalho vim painel 0 logs shell Sessao: deploy deploy script Sessao: monitor htop Desconectado SSH caiu? Sessoes ativas Reconectar Sessoes persistem independentemente das conexoes SSH

Se voce ja perdeu trabalho porque uma conexao SSH caiu, ou se encontrou fazendo malabarismos com multiplas janelas de terminal para gerenciar um servidor remoto, o tmux e a ferramenta que resolve ambos os problemas. Tmux (abreviacao de “terminal multiplexer”) permite criar sessoes de terminal persistentes que sobrevivem a desconexoes, dividir um terminal em multiplos paineis e alternar entre espacos de trabalho completamente separados — tudo a partir de uma unica conexao SSH. Uma vez que voce aprenda tmux, vai se perguntar como conseguia trabalhar sem ele.

Este guia cobre tudo o que voce precisa para ser produtivo com tmux: instalacao, conceitos fundamentais, gerenciamento de sessoes e paineis, configuracao personalizada, modo de copia e fluxos de trabalho para programacao em par.


Pre-requisitos

Antes de comecar, voce precisa de:

  • Um sistema Linux (Ubuntu, Debian, Fedora, CentOS, Arch ou similar)
  • Acesso ao terminal (local ou via SSH)
  • Familiaridade basica com a linha de comando
  • Uma conta de usuario com privilegios sudo para instalacao

O Que e Tmux?

Tmux e um multiplexador de terminal — um programa que permite executar multiplas sessoes de terminal dentro de uma unica janela. Ele opera em um modelo cliente-servidor: o servidor tmux executa em segundo plano e gerencia todas as sessoes, enquanto o cliente tmux (seu terminal) se conecta para visualizar e interagir com elas.

Os principais beneficios do tmux sao:

  • Sessoes persistentes — Seu trabalho sobrevive a desconexoes SSH, quedas de rede e fechamentos de terminal.
  • Multiplas janelas — Alterne entre espacos de trabalho separados (como abas de navegador para seu terminal).
  • Paineis divididos — Visualize e interaja com multiplos programas lado a lado em uma janela.
  • Scriptavel — Automatize layouts e fluxos de trabalho complexos via scripts de shell.
  • Colaboracao remota — Multiplos usuarios podem se conectar a mesma sessao simultaneamente.

Tmux vs GNU Screen

Se voce ja usou GNU Screen antes, aqui esta como o tmux se compara:

RecursoTmuxGNU Screen
Divisoes verticaisIntegradoRequer patch ou versao mais nova
ConfiguracaoSintaxe limpa e modernaMais complexa
ScriptabilidadeExcelenteLimitada
Barra de statusAltamente personalizavelBasica
Desenvolvimento ativoSimMinimo
Padrao em sistemasMenos comumMais comum em sistemas antigos
LicencaISC (permissiva)GPL

Ambas as ferramentas cumprem a mesma tarefa fundamental: sessoes de terminal persistentes e multiplexadas. Tmux e geralmente a melhor escolha para novos usuarios devido ao seu design mais limpo e comunidade ativa.


Instalando o Tmux

O tmux esta disponivel nos repositorios padrao de todas as principais distribuicoes Linux.

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 (via Homebrew):

brew install tmux

Verifique a instalacao:

tmux -V

Voce deve ver uma saida como tmux 3.4 ou similar. Qualquer versao 3.0 ou posterior inclui todos os recursos cobertos neste guia.


Conceitos Fundamentais: Sessoes, Janelas e Paineis

Compreender a hierarquia do tmux e essencial antes de usa-lo efetivamente. Ha tres niveis:

Sessao — O contêiner de nivel superior. Uma sessao e um espaco de trabalho independente que pode conter multiplas janelas. Voce pode ter muitas sessoes executando simultaneamente (por exemplo, uma para desenvolvimento, uma para implantacao, uma para monitoramento).

Janela — Uma janela vive dentro de uma sessao e ocupa a tela inteira (como uma aba em um navegador). Cada sessao pode ter multiplas janelas, e voce alterna entre elas.

Painel — Um painel e uma subdivisao de uma janela. Voce pode dividir uma janela horizontal ou verticalmente para criar multiplos paineis, cada um executando seu proprio shell ou comando.

servidor tmux
  |
  +-- Sessao: "trabalho"
  |     +-- Janela 0: "editor"
  |     |     +-- Painel 0: vim
  |     |     +-- Painel 1: terminal
  |     +-- Janela 1: "logs"
  |           +-- Painel 0: tail -f /var/log/syslog
  |
  +-- Sessao: "deploy"
        +-- Janela 0: "principal"
              +-- Painel 0: ssh servidor-producao

A tecla prefixo e como voce informa ao tmux que esta prestes a emitir um comando em vez de digitar texto. O prefixo padrao e Ctrl+b. Voce pressiona Ctrl+b, solta ambas as teclas e entao pressiona a tecla do comando. Por exemplo, Ctrl+b c significa: pressione Ctrl+b, solte, depois pressione c para criar uma nova janela.


Gerenciamento de Sessoes

As sessoes sao a base do tmux. Aqui estao os comandos essenciais de sessao:

Criando Sessoes

# Iniciar uma nova sessao com nome auto-gerado
tmux

# Iniciar uma nova sessao nomeada (recomendado)
tmux new -s trabalho

# Iniciar uma nova sessao e executar um comando especifico
tmux new -s logs "tail -f /var/log/syslog"

Sempre nomeie suas sessoes. Quando voce tem multiplas sessoes executando, os nomes facilitam identifica-las e alternar entre elas.

Desanexando de uma Sessao

Pressione Ctrl+b d para desanexar da sessao atual. A sessao continua executando em segundo plano com todos os processos intactos.

# Voce tambem pode desanexar pela linha de comando dentro do tmux
tmux detach

Listando Sessoes

# Listar todas as sessoes em execucao
tmux ls

# Exemplo de saida:
# deploy: 1 windows (created Mon Jan 20 09:15:22 2026)
# trabalho: 3 windows (created Mon Jan 20 08:30:15 2026) (attached)

Reanexando a uma Sessao

# Anexar a sessao mais recente
tmux attach

# Anexar a uma sessao nomeada especifica
tmux attach -t trabalho

# Forma abreviada
tmux a -t trabalho

Eliminando Sessoes

# Eliminar uma sessao especifica
tmux kill-session -t deploy

# Eliminar todas as sessoes exceto a atual
tmux kill-session -a

# Eliminar o servidor tmux completamente (destroi todas as sessoes)
tmux kill-server

Alternando Entre Sessoes

De dentro do tmux:

  • Ctrl+b s — Listar todas as sessoes e selecionar uma interativamente.
  • Ctrl+b ( — Alternar para a sessao anterior.
  • Ctrl+b ) — Alternar para a proxima sessao.

Gerenciamento de Janelas

As janelas sao como abas dentro de uma sessao. Cada janela executa independentemente e ocupa toda a area do terminal.

Criando e Navegando Janelas

# Criar uma nova janela
Ctrl+b c

# Renomear a janela atual
Ctrl+b ,

# Alternar para janela por numero
Ctrl+b 0    # Alternar para janela 0
Ctrl+b 1    # Alternar para janela 1

# Alternar para a janela seguinte/anterior
Ctrl+b n    # Proxima janela
Ctrl+b p    # Janela anterior

# Listar todas as janelas e selecionar interativamente
Ctrl+b w

Fechando Janelas

# Fechar a janela atual (fecha todos os paineis nela)
Ctrl+b &

# Ou simplesmente sair do shell executando na janela
exit

Dica: A barra de status na parte inferior mostra todas as janelas na sessao atual. A janela ativa e marcada com um asterisco (*). Renomear janelas com Ctrl+b , ajuda a acompanhar para que serve cada janela.


Gerenciamento de Paineis

Os paineis permitem dividir uma unica janela em multiplos terminais. Este e um dos recursos mais poderosos do tmux.

Dividindo Paineis

# Dividir horizontalmente (cima/baixo)
Ctrl+b "

# Dividir verticalmente (esquerda/direita)
Ctrl+b %
# Mover entre paineis usando teclas de seta
Ctrl+b Up
Ctrl+b Down
Ctrl+b Left
Ctrl+b Right

# Ciclar entre paineis
Ctrl+b o

# Pular para um painel especifico por numero
Ctrl+b q    # Mostra numeros dos paineis, depois pressione o numero

Redimensionando Paineis

# Redimensionar na direcao da tecla de seta
Ctrl+b Ctrl+Up
Ctrl+b Ctrl+Down
Ctrl+b Ctrl+Left
Ctrl+b Ctrl+Right

# Ou usar o comando resize-pane
# (dentro do prompt de comandos do tmux: Ctrl+b :)
resize-pane -D 5    # Baixo 5 linhas
resize-pane -U 5    # Cima 5 linhas
resize-pane -L 10   # Esquerda 10 colunas
resize-pane -R 10   # Direita 10 colunas

Layouts e Operacoes de Paineis

# Alternar entre layouts de paineis
Ctrl+b Space

# Trocar paineis
Ctrl+b {    # Trocar com painel anterior
Ctrl+b }    # Trocar com proximo painel

# Converter um painel em sua propria janela
Ctrl+b !

# Fechar o painel atual
Ctrl+b x

# Alternar zoom do painel (tela cheia de um unico painel)
Ctrl+b z

O recurso de zoom (Ctrl+b z) e particularmente util. Ele maximiza temporariamente um painel para preencher toda a janela. Pressione Ctrl+b z novamente para restaurar o layout original.


Personalizando o tmux.conf

O tmux le sua configuracao de ~/.tmux.conf. Uma configuracao bem ajustada melhora drasticamente a usabilidade. Crie o arquivo se nao existir:

touch ~/.tmux.conf

Alterar a Tecla Prefixo

Muitos usuarios remapeiam o prefixo de Ctrl+b para Ctrl+a (que esta mais perto da linha inicial e corresponde ao GNU Screen):

# Alterar prefixo de Ctrl+b para Ctrl+a
unbind C-b
set -g prefix C-a
bind C-a send-prefix

Habilitar Suporte a Mouse

# Habilitar suporte a mouse
set -g mouse on

Melhorar Cores e Configuracoes de Terminal

# Definir terminal de 256 cores
set -g default-terminal "screen-256color"

# Habilitar suporte a cores verdadeiras
set -ga terminal-overrides ",xterm-256color:Tc"

Personalizar a Barra de Status

# Posicao da barra de status
set -g status-position bottom

# Cores da barra de status
set -g status-style "bg=#1a1b26,fg=#a9b1d6"

# Lado esquerdo: nome da sessao
set -g status-left "#[fg=#06b6d4,bold] #S "
set -g status-left-length 30

# Lado direito: data e hora
set -g status-right "#[fg=#a9b1d6] %Y-%m-%d %H:%M "

# Formato de status da janela
setw -g window-status-format " #I:#W "
setw -g window-status-current-format "#[fg=#06b6d4,bold] #I:#W "

Padroes Sensiveis

# Iniciar numeracao de janelas em 1 (nao 0)
set -g base-index 1
setw -g pane-base-index 1

# Renumerar janelas quando uma e fechada
set -g renumber-windows on

# Aumentar buffer de rolagem
set -g history-limit 50000

# Reduzir atraso de tempo de escape (importante para usuarios de vim)
set -sg escape-time 0

# Recarregar arquivo de configuracao com Ctrl+a r
bind r source-file ~/.tmux.conf \; display-message "Config recarregada"

Divisao de Paineis Mais Facil

# Dividir paineis usando | e -
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
unbind '"'
unbind %

Apos editar ~/.tmux.conf, recarregue-o sem reiniciar o tmux:

# De dentro do tmux, pressione Ctrl+b : e digite:
source-file ~/.tmux.conf

# Ou se voce adicionou o binding acima:
Ctrl+a r

Exemplo Completo de tmux.conf

Aqui esta uma configuracao inicial completa combinando tudo acima:

# ~/.tmux.conf - Configuracao inicial

# Remapear prefixo para Ctrl+a
unbind C-b
set -g prefix C-a
bind C-a send-prefix

# Suporte a mouse
set -g mouse on

# Terminal e cores
set -g default-terminal "screen-256color"
set -ga terminal-overrides ",xterm-256color:Tc"

# Iniciar numeracao em 1
set -g base-index 1
setw -g pane-base-index 1
set -g renumber-windows on

# Buffer de rolagem
set -g history-limit 50000

# Sem atraso de escape
set -sg escape-time 0

# Divisao facil de paineis
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"

# Recarga facil
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-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 "

Modo de Copia e Rolagem

Por padrao, o tmux captura a saida do terminal em um buffer de rolagem. Voce pode entrar no modo de copia para rolar pela saida anterior, buscar texto e copiar selecoes.

Entrando e Usando o Modo de Copia

# Entrar no modo de copia
Ctrl+b [

# Navegar no modo de copia
Arrow keys    # Mover cursor
Page Up       # Rolar uma pagina acima
Page Down     # Rolar uma pagina abaixo
g             # Ir ao topo do buffer
G             # Ir ao final do buffer

# Buscar no modo de copia
/             # Buscar para frente
?             # Buscar para tras
n             # Proxima correspondencia
N             # Correspondencia anterior

# Sair do modo de copia
q

Copiando Texto

Com os atalhos padrao estilo emacs:

# No modo de copia:
Ctrl+Space    # Iniciar selecao
Alt+w         # Copiar selecao para o buffer do tmux

# Colar o buffer
Ctrl+b ]

Para usar atalhos estilo vi (recomendado para usuarios de vim), adicione ao seu ~/.tmux.conf:

# Modo de copia vi
setw -g mode-keys vi

# Atalhos de copia estilo 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

Copiando para a Area de Transferencia do Sistema

Para integrar o buffer de copia do tmux com a area de transferencia do seu sistema, instale xclip ou xsel e adicione:

# Copiar para a area de transferencia do sistema (Linux com xclip)
bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "xclip -selection clipboard"

# Copiar para a area de transferencia do sistema (macOS)
bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "pbcopy"

Programacao em Par com Tmux

Um dos usos mais praticos do tmux e a colaboracao em tempo real. Quando dois usuarios se anexam a mesma sessao tmux, ambos veem e interagem com o mesmo terminal simultaneamente.

Sessao Compartilhada Basica

# Usuario 1 cria uma sessao no servidor compartilhado
tmux new -s pairing

# Usuario 2 se conecta via SSH ao mesmo servidor e se anexa
tmux attach -t pairing

Ambos os usuarios agora compartilham a mesma visao e podem digitar comandos. Isso e eficaz, mas significa que ambos os usuarios estao presos na mesma janela e painel.

Janelas Independentes com Sessao Compartilhada

Para mais flexibilidade, o Usuario 2 pode criar uma sessao agrupada que compartilha as mesmas janelas mas permite visualizacao independente:

# Usuario 2 se junta com uma sessao agrupada
tmux new -s usuario2 -t pairing

Agora ambos os usuarios compartilham o mesmo conjunto de janelas, mas cada um pode visualizar uma janela diferente independentemente.

Melhores Praticas para Programacao em Par

  • Nomeie suas sessoes descritivamente para que ambos os usuarios saibam a qual sessao se juntar.
  • Comunique quem esta digitando. Entrada simultanea de ambos os usuarios pode ser confusa.
  • Use o recurso de zoom (Ctrl+b z) quando um usuario precisar focar em um painel especifico.
  • Defina um tamanho de terminal maior — o tmux redimensiona para o menor cliente anexado por padrao.

Tabela de Referencia de Atalhos Essenciais

Aqui esta uma referencia completa dos atalhos mais importantes do tmux (usando o prefixo padrao Ctrl+b):

AtalhoAcao
Sessoes
tmux new -s nomeCriar uma nova sessao nomeada
tmux lsListar todas as sessoes
tmux attach -t nomeAnexar a uma sessao nomeada
tmux kill-session -t nomeEliminar uma sessao nomeada
Ctrl+b dDesanexar da sessao atual
Ctrl+b sListar e alternar sessoes
Ctrl+b $Renomear sessao atual
Janelas
Ctrl+b cCriar uma nova janela
Ctrl+b ,Renomear janela atual
Ctrl+b nProxima janela
Ctrl+b pJanela anterior
Ctrl+b 0-9Alternar para janela por numero
Ctrl+b wListar e selecionar janelas
Ctrl+b &Fechar janela atual
Paineis
Ctrl+b "Dividir painel horizontalmente
Ctrl+b %Dividir painel verticalmente
Ctrl+b SetaNavegar entre paineis
Ctrl+b oCiclar entre paineis
Ctrl+b zAlternar zoom do painel
Ctrl+b xFechar painel atual
Ctrl+b !Converter painel em janela
Ctrl+b { / }Trocar paineis
Ctrl+b SpaceCiclar layouts de paineis
Modo de Copia
Ctrl+b [Entrar no modo de copia
Ctrl+b ]Colar buffer
qSair do modo de copia
Outros
Ctrl+b :Abrir prompt de comandos
Ctrl+b tMostrar relogio
Ctrl+b ?Listar todos os atalhos de teclado

Solucao de Problemas

Tmux Nao Encontrado Apos a Instalacao

Se tmux nao for encontrado apos a instalacao, seu shell pode precisar de uma atualizacao de caminho:

hash -r
# ou iniciar uma nova sessao de shell
exec bash

Cores Parecem Erradas Dentro do Tmux

Certifique-se de que seu terminal e o tmux concordam no suporte a cores:

# Verificar a variavel TERM do seu terminal
echo $TERM

# Adicionar a ~/.tmux.conf
set -g default-terminal "screen-256color"

Sessoes Tmux Aninhadas

Se voce se conectar via SSH a um servidor que inicia tmux automaticamente, pode acabar com tmux dentro de tmux. A sessao interna captura a tecla prefixo.

Solucao: Use um prefixo diferente para a sessao interna, ou envie a tecla prefixo para a sessao interna pressionando o prefixo duas vezes:

# Enviar prefixo para a sessao interna do tmux
Ctrl+b Ctrl+b

Rolagem com Mouse Nao Funciona

Se a rolagem com mouse nao funcionar, certifique-se de que o modo de mouse esta habilitado:

# Em ~/.tmux.conf
set -g mouse on

A Sessao Desapareceu Apos Reinicializacao

As sessoes tmux nao sobrevivem a uma reinicializacao do sistema por padrao. Para persistir sessoes entre reinicializacoes, use o plugin tmux-resurrect:

# Instalar tmux plugin manager (TPM)
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm

# Adicionar a ~/.tmux.conf
set -g @plugin 'tmux-plugins/tmux-resurrect'
run '~/.tmux/plugins/tpm/tpm'

# Salvar sessao: Ctrl+b Ctrl+s
# Restaurar sessao: Ctrl+b Ctrl+r

Integracao da Area de Transferencia Nao Funciona via SSH

Quando usar tmux via SSH, copiar para sua area de transferencia local requer configuracao adicional. Use SSH com encaminhamento X11 ou configure sequencias de escape OSC 52:

# Habilitar area de transferencia OSC 52 no tmux.conf
set -g set-clipboard on

Resumo

O tmux e uma ferramenta essencial para qualquer pessoa que trabalhe com servidores remotos ou queira um fluxo de trabalho de terminal mais eficiente. Suas sessoes persistentes protegem voce de quedas de conexao, seu gerenciamento de janelas e paineis permite organizar tarefas complexas, e suas capacidades de script permitem ambientes de desenvolvimento reproduziveis.

Os pontos-chave deste guia:

  • Sessoes persistem mesmo quando sua conexao SSH cai — basta executar tmux attach para retomar.
  • Janelas e paineis permitem organizar multiplas tarefas dentro de um unico terminal.
  • Configuracao personalizada via ~/.tmux.conf faz o tmux se adaptar perfeitamente ao seu fluxo de trabalho.
  • O modo de copia oferece capacidades completas de rolagem e busca.
  • Programacao em par e tao simples quanto dois usuarios se anexarem a mesma sessao.

Comece com o basico: crie uma sessao nomeada, divida alguns paineis, desanexe e reanexe. A medida que os atalhos se tornem memoria muscular, voce se encontrara naturalmente construindo fluxos de trabalho mais complexos.

O tmux combina bem com uma configuracao de servidor segura. Se voce ainda nao endureceu sua configuracao SSH, leia nosso guia sobre Endurecimento SSH: 12 Passos para Proteger Seu Servidor Linux. Para uma visao geral mais ampla de seguranca do servidor, consulte a Lista de Verificacao de Seguranca de Servidor Linux: 20 Passos Essenciais.