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
sudopara 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:
| Recurso | Tmux | GNU Screen |
|---|---|---|
| Divisoes verticais | Integrado | Requer patch ou versao mais nova |
| Configuracao | Sintaxe limpa e moderna | Mais complexa |
| Scriptabilidade | Excelente | Limitada |
| Barra de status | Altamente personalizavel | Basica |
| Desenvolvimento ativo | Sim | Minimo |
| Padrao em sistemas | Menos comum | Mais comum em sistemas antigos |
| Licenca | ISC (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 %
Navegando Entre Paineis
# 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):
| Atalho | Acao |
|---|---|
| Sessoes | |
tmux new -s nome | Criar uma nova sessao nomeada |
tmux ls | Listar todas as sessoes |
tmux attach -t nome | Anexar a uma sessao nomeada |
tmux kill-session -t nome | Eliminar uma sessao nomeada |
Ctrl+b d | Desanexar da sessao atual |
Ctrl+b s | Listar e alternar sessoes |
Ctrl+b $ | Renomear sessao atual |
| Janelas | |
Ctrl+b c | Criar uma nova janela |
Ctrl+b , | Renomear janela atual |
Ctrl+b n | Proxima janela |
Ctrl+b p | Janela anterior |
Ctrl+b 0-9 | Alternar para janela por numero |
Ctrl+b w | Listar e selecionar janelas |
Ctrl+b & | Fechar janela atual |
| Paineis | |
Ctrl+b " | Dividir painel horizontalmente |
Ctrl+b % | Dividir painel verticalmente |
Ctrl+b Seta | Navegar entre paineis |
Ctrl+b o | Ciclar entre paineis |
Ctrl+b z | Alternar zoom do painel |
Ctrl+b x | Fechar painel atual |
Ctrl+b ! | Converter painel em janela |
Ctrl+b { / } | Trocar paineis |
Ctrl+b Space | Ciclar layouts de paineis |
| Modo de Copia | |
Ctrl+b [ | Entrar no modo de copia |
Ctrl+b ] | Colar buffer |
q | Sair do modo de copia |
| Outros | |
Ctrl+b : | Abrir prompt de comandos |
Ctrl+b t | Mostrar 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 attachpara retomar. - Janelas e paineis permitem organizar multiplas tarefas dentro de um unico terminal.
- Configuracao personalizada via
~/.tmux.conffaz 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.