Saltar al contenido principal

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

ComandoAcciónDescripción
prefix + dDetachSalir de sesión (sin cerrarla)
prefix + cCreate windowNueva ventana
prefix + nNext windowSiguiente ventana
prefix + pPrevious windowVentana anterior
prefix + &Kill windowCerrar ventana

Por defecto, prefix = Ctrl+b

Ejercicio básico:

  1. Abre tmux: tmux
  2. Crea nueva ventana: Ctrl+b luego c
  3. Cambia nombre: Ctrl+b luego , y escribe "prueba"
  4. Regresa a ventana anterior: Ctrl+b luego p
  5. Sal de sesión: Ctrl+b luego d

📱 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:

  1. Revisar sesiones: tmux ls
  2. Conectar a proyecto: tmux attach -t proyecto
  3. O crear nuevo: tmux new -s nuevo-proyecto

Durante el trabajo:

  1. Nueva ventana por tarea: Ctrl+a c
  2. Nombrar ventanas: Ctrl+a ,
  3. Navegar: Ctrl+a 0/1/2... o Ctrl+a n/p

Final del día:

  1. Detach de sesiones: Ctrl+a d
  2. Las sesiones siguen corriendo
  3. 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

  1. Crear sesión con nombre
  2. Crear 3 ventanas
  3. Navegar entre ellas
  4. Detach y reconnect

Día 2: Organización

  1. Una sesión por proyecto
  2. Nombrar ventanas descriptivamente
  3. Practicar navegación rápida

Día 3: Persistencia

  1. Crear sesión con trabajo en progreso
  2. Detach
  3. Hacer otras cosas
  4. 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.