301. Introducción a Tmux: sesiones persistentes 🖥️
¿Qué es Tmux y por qué lo necesitas?
Tmux (Terminal Multiplexer) es una herramienta que revolucionará tu forma de trabajar en terminal. Si Vim te hace eficiente editando texto, Tmux te hace eficiente gestionando tu entorno de trabajo completo.
🤔 ¿Qué problemas resuelve Tmux?
Problema 1: Sesiones que se pierden
Sin Tmux:
ssh servidor.com
cd /var/www/proyecto
vim index.js
# Se cae la conexión... ¡pierdes todo!
Con Tmux:
ssh servidor.com
tmux new -s proyecto
cd /var/www/proyecto
vim index.js
# Se cae la conexión... reconectas con:
tmux attach -t proyecto
# ¡Todo sigue ahí!
Problema 2: Una sola cosa a la vez
Sin Tmux:
- Una terminal = una tarea
- Para hacer múltiples cosas necesitas múltiples ventanas de terminal
- Difícil organizar y gestionar
Con Tmux:
- Una sesión = múltiples ventanas y paneles
- Todo organizado y accesible con atajos de teclado
- Cambio instantáneo entre contextos
Problema 3: Contexto perdido
Sin Tmux:
- Cambias de proyecto → abres nuevas terminales
- Pierdes el contexto del proyecto anterior
- Difícil volver al estado anterior
Con Tmux:
- Cada proyecto = una sesión
- Cambio instantáneo entre proyectos
- Cada proyecto mantiene su estado
🏗️ Conceptos fundamentales
Jerarquía de Tmux
SERVIDOR TMUX
├── SESIÓN "desarrollo"
│ ├── VENTANA "editor" (vim)
│ ├── VENTANA "servidor" (npm start)
│ └── VENTANA "git" (git status)
├── SESIÓN "monitoreo"
│ ├── VENTANA "logs"
│ │ ├── PANEL izq (app.log)
│ │ └── PANEL der (error.log)
│ └── VENTANA "sistema" (htop)
└── SESIÓN "experimentos"
└── VENTANA "pruebas"
Analogías para entender:
- Servidor Tmux = Tu escritorio
- Sesión = Un proyecto o contexto de trabajo
- Ventana = Una aplicación o tarea específica
- Panel = División de pantalla dentro de una ventana
🚀 Instalación de Tmux
Linux
# Ubuntu/Debian
sudo apt update && sudo apt install tmux
# CentOS/RHEL/Fedora
sudo dnf install tmux
# Arch Linux
sudo pacman -S tmux
macOS
# Con Homebrew
brew install tmux
# Con MacPorts
sudo port install tmux
Verificar instalación
tmux -V
# Debería mostrar: tmux 3.x
🎮 Primeros pasos con Tmux
Conceptos de control
- Prefix key: Combinación que activa comandos Tmux (por defecto
Ctrl+b
) - Comando: Tecla que presionas después del prefix
- Formato:
prefix + comando
Tu primera sesión
# Crear nueva sesión
tmux
# Deberías ver una barra verde en la parte inferior
# [0] 0:bash* "hostname" 14:30 05-Jul-25
Comandos básicos de supervivencia
Comando | Acción | Descripción |
---|---|---|
prefix + d | Detach | Salir de sesión (sin cerrarla) |
prefix + c | Create window | Nueva ventana |
prefix + n | Next window | Siguiente ventana |
prefix + p | Previous window | Ventana anterior |
prefix + & | Kill window | Cerrar ventana |
Por defecto, prefix = Ctrl+b
Ejercicio básico:
- Abre tmux:
tmux
- Crea nueva ventana:
Ctrl+b
luegoc
- Cambia nombre:
Ctrl+b
luego,
y escribe "prueba" - Regresa a ventana anterior:
Ctrl+b
luegop
- Sal de sesión:
Ctrl+b
luegod
📱 Gestión de sesiones
Crear sesiones con nombre
# Mejor práctica: siempre usar nombres descriptivos
tmux new -s desarrollo
tmux new -s monitoreo
tmux new -s experimentos
Listar sesiones activas
tmux ls
# Salida ejemplo:
# desarrollo: 3 windows (created Fri Jul 5 14:30:22 2025)
# monitoreo: 1 windows (created Fri Jul 5 14:35:10 2025)
Conectarse a sesiones existentes
# Por nombre (recomendado)
tmux attach -t desarrollo
# Por número
tmux attach -t 0
# Última sesión activa
tmux attach
Matar sesiones
# Una sesión específica
tmux kill-session -t desarrollo
# Todas las sesiones
tmux kill-server
🔧 Configuración básica mejorada
Vamos a mejorar la experiencia de Tmux desde el principio:
Crear ~/.tmux.conf
# Archivo: ~/.tmux.conf
# Configuración básica para principiantes
# Cambiar prefix de Ctrl+b a Ctrl+a (más cómodo)
set -g prefix C-a
unbind C-b
bind C-a send-prefix
# Comenzar numeración en 1 (más lógico)
set -g base-index 1
setw -g pane-base-index 1
# Renumerar ventanas automáticamente
set -g renumber-windows on
# Habilitar mouse (útil para principiantes)
set -g mouse on
# Reducir delay para comandos
set -sg escape-time 0
# Aumentar historial
set -g history-limit 10000
# Mejorar colores
set -g default-terminal "screen-256color"
# Recargar configuración fácilmente
bind r source-file ~/.tmux.conf \; display "¡Config recargada!"
# Crear ventana nueva en directorio actual
bind c new-window -c "#{pane_current_path}"
Aplicar configuración
# Crear archivo
vim ~/.tmux.conf
# (copiar configuración de arriba)
# Recargar en sesión activa
tmux source-file ~/.tmux.conf
Ahora tu prefix key es Ctrl+a
(más cómodo que Ctrl+b
)
💼 Casos de uso reales
Caso 1: Desarrollo web
# Crear sesión para proyecto web
tmux new -s webapp
# Ventana 1: Editor
# (por defecto estás aquí)
vim src/
# Ventana 2: Servidor de desarrollo
# Ctrl+a, c (nueva ventana)
npm run dev
# Ventana 3: Git y comandos
# Ctrl+a, c (otra ventana)
git status
# Cambiar entre ventanas: Ctrl+a, 0/1/2
Caso 2: Administración de servidor
# Sesión para monitoreo
tmux new -s monitor
# Ventana 1: Logs del sistema
tail -f /var/log/syslog
# Ventana 2: Monitoreo de recursos
htop
# Ventana 3: Conexiones de red
watch netstat -tuln
Caso 3: Trabajo remoto
# En tu máquina local
ssh usuario@servidor.com
# En el servidor
tmux new -s trabajo
# Trabajas normalmente...
# Se cae la conexión
# Reconectas
ssh usuario@servidor.com
tmux attach -t trabajo
# ¡Todo sigue donde lo dejaste!
🎯 Workflow típico con Tmux
Inicio del día:
- Revisar sesiones:
tmux ls
- Conectar a proyecto:
tmux attach -t proyecto
- O crear nuevo:
tmux new -s nuevo-proyecto
Durante el trabajo:
- Nueva ventana por tarea:
Ctrl+a c
- Nombrar ventanas:
Ctrl+a ,
- Navegar:
Ctrl+a 0/1/2...
oCtrl+a n/p
Final del día:
- Detach de sesiones:
Ctrl+a d
- Las sesiones siguen corriendo
- Mañana siguiente:
tmux attach
🚨 Comandos de emergencia
Si te pierdes:
# Ver todas las sesiones
tmux ls
# Conectar a cualquier sesión
tmux attach
# Ver atajos de teclado
Ctrl+a ?
Si algo no funciona:
# Matar tmux completamente
tmux kill-server
# Empezar limpio
tmux
Si no recuerdas el prefix:
- Por defecto es
Ctrl+b
- Si configuraste ~/.tmux.conf es
Ctrl+a
- Para ver configuración actual:
tmux show-options -g prefix
📊 Status bar - Información útil
La barra de estado te muestra información importante:
[0] 0:bash* 1:vim 2:server- "hostname" 14:30 05-Jul-25
^ ^^^^^ ^^^ ^^^^^^ ^^^^^^^^ ^^^^ ^^^^^^^^
| | | | | | |
| | | | | | fecha
| | | | | hora
| | | | hostname
| | | ventana inactiva
| | ventana activa
| ventana 0 (bash) - activa (*)
sesión número 0
🎮 Mini-ejercicios diarios
Día 1: Básicos
- Crear sesión con nombre
- Crear 3 ventanas
- Navegar entre ellas
- Detach y reconnect
Día 2: Organización
- Una sesión por proyecto
- Nombrar ventanas descriptivamente
- Practicar navegación rápida
Día 3: Persistencia
- Crear sesión con trabajo en progreso
- Detach
- Hacer otras cosas
- Reconnect y continuar
🔜 ¿Qué sigue?
En el próximo capítulo aprenderemos sobre ventanas y paneles - cómo dividir tu espacio de trabajo de manera más granular y eficiente.
💡 Tip pro: Tmux puede parecer abrumador al principio, pero comienza usando solo sesiones y ventanas. Los paneles y funciones avanzadas pueden esperar.
🎯 Objetivo del capítulo: Entender el valor de las sesiones persistentes y poder usar Tmux para trabajo básico.