Ha Uma Ferramenta Muito Interessante Que Pode Ser Usada - O ciclo PDCA: ferramenta de qualidade pode ser usada até na vida ...
O ciclo PDCA: ferramenta de qualidade pode ser usada até na vida ...

Pare de perder tempo navegando entre janelas de terminal

A verdade é que a maioria das pessoas que eu vejo no dia a dia trabalha com três ou quatro terminais abertos e perde uns 20 minutos por sessão só alternando entre eles, verificando se algo rodou, voltando para dar input de novo. Isso é dinheiro queimado. Não precisa ser assim.

ha uma ferramenta muito interessante que pode ser usada: o tmux

Eu conheci o tmux há quase uma década, quando precisei manter um processo de compilação rodando numa VPS barata com conexões de internet instáveis na época. Se você já ficou travado nessa situação — processo importante rodando num servidor remoto e a conexão cai — então já sabe por que isso existe. O tmux é basicamente um gerenciador de sessões de terminal. Ele cria uma camada entre você e o shell. Você sobe uma sessão, abre divisões dentro dela (panes), roda tudo que precisa, e pode desconectar sem que nada pare. Quando reconectar depois, está tudo exatamente onde deixou.

A instalação em distribuições Debian-based é simples: sudo apt install tmux. Em Arch, sudo pacman -S tmux. No macOS, brew install tmux. Versão 3.3 ou superior, pelo menos. Versões mais antigas têm problemas estranhos com copiar e colar em alguns terminais modernos. O comando inicial é tmux. Só isso. Já entra numa sessão nova. O que você não vê de cara é o status bar embaixo, com informações sobre as janelas e panes. A partir daí, tudo se faz com o prefixo. Por padrão, Ctrl+B. Digita C para criar nova janela. Digita D para desconectar e voltar ao shell normal. Sessão rodando, processo intacto.

Dentro do tmux, posso dividir a tela com Ctrl+B, " (horizontal) ou % (vertical). Cada divisão é uma pane independente com seu próprio shell rodando. Posso ter log de erro de um lado, código do outro, e um terminal com acesso ao servidor de produção no canto. Sem precisar abrir três terminais diferentes no sistema operacional. O que muita gente não entende na hora certa é o gerenciamento de buffer de cópia. O tmux tem seu próprio sistema de buffer separado do sistema operacional. Para entrar no modo cópia, Ctrl+B [. Aí uso j e k para navegar, barra de espaço para começar a selecionar, Enter para copiar. Quando quiser colar fora do tmux, Ctrl+B ]. Isso funciona independente do terminal emuso, o que elimina aquele problema chato de configurações de clipboard falharem entre ambientes.

👉 Clique no botão abaixo para saber mais sobre o assunto!

Aqui vai algo que eu aprendi na marra: o tmux não lida bem com processos que consomem muita CPU em pane única sem configuração adicional. A sessão inteira pode ficar lenta se um processo numa pane específica consumir recursos excessivos. A solução que eu uso é configurar o limit-output no .tmux.conf com limit-output 1000. Isso limita o buffer de saída por pane e evita que o tmux fique presa processando milhares de linhas de log. Também configurei set history-limit 50000. Sem isso, sessões que rodham build logs grandes ou comandos com output extenso fazem o tmux consumir memória desnecessária. Meu servidor de CI interno tinha um caso onde uma pane com output infinito travou a sessão inteira porque eu não tinha configurado isso. Perdi duas horas tentando recuperar dados que poderiam ser recuperados de outra forma, mas o ponto é que o tmux não é imune a problemas de consumo de recursos.

Um truque prático que poupa muito tempo: tmux new -s nome da_sessao. Cria uma sessão com nome próprio. Depois, tmux attach -t nome da_sessao reconnecta direto naquela sessão específica. Se você trabalha com múltiplos projetos ou servidores, isso elimina a confusão de tentar lembrar qual número de sessão é qual. O maior problema que as pessoas enfrentam no início é a curva de aprendizado dos atalhos. Nos primeiros dias, eu gastava mais tempo procurando qual tecla pressionar do que realmente trabalhando. A solução foi simple: usar o .tmux.conf da comunidade. TemConfigs muito boas no GitHub. Eu comecei com a do Greg Houston, adaptei o que precisava, e em uma semana os atalhos já estavam naturais.

O ponto fraco do tmux que pouca gente menciona é que ele não substitui ferramentas especializadas como Docker para isolamento de ambientes ou Kubernetes para orquestração de containers. O tmux é para gerenciar sessões interativas de terminal. Se alguém te vender como solução para tudo, está enganado ou vendendo algo. Ele não faz backup, não monitora saúde de processos, não escalar automaticamente nada. É apenas uma camada de gerenciamento de terminal com resiliência de conexão. Para quem quer ir além do básico, o tmux pode ser configurado para sincronizar input entre panes com Ctrl+B :setw synchronized-pane on. Útil para rodar o mesmo comando em múltiplos servidores ao mesmo tempo. Mas cuidado: isso sincroniza literalmente tudo, incluindo teclas erradas. Se você digitar algo errado numa pane, aparece em todas. Já vi alguém apagar um arquivo de produção porque sincronizou o pane sem querer e digitou rm -rf em todos os terminais ao mesmo tempo.

Se você está começando agora, não tente aprender tudo de uma vez. Comece com o básico: tmux para criar sessão, Ctrl+B D para desconectar, Ctrl+B c para nova janela, Ctrl+B n e p para navegar entre janelas. Quando isso virar automático, explore as divisões. Depois, configure o .tmux.conf com suas preferências. Leva cerca de uma semana de uso diário para os atalhos grudarem na memória muscular. O download e documentação oficial estão em https://tmux.org/. O código fonte é no GitHub em github.com/tmux/tmux/wiki. As configs da comunidade são fáceis de encontrar e adaptar. Nada que exija pagamento ou licença especial.

Resumindo: o tmux resolve um problema real e específico. Sessões de terminal que precisam sobreviver a quedas de conexão e serem organizadas de forma eficiente. Se seu trabalho envolve shell, rede, servidores remotos ou qualquer coisa que demande múltiplas janelas de terminal simultâneas, vale o tempo de configuração. Se você usa terminal ocasionalmente para comandos simples, provavelmente não precisa.