Comandos de Linux para el homelab: los que más uso
Una selección práctica de comandos de Linux para sobrevivir el día a día del homelab. Desde htop y ss hasta rsync y tmux, con ejemplos de un setup real.
El homelab enseña rompiendo, no leyendo manuales
Si tienes un servidor en casa —da igual que sea un Proxmox con cuatro VMs, un NAS corriendo servicios o una Pi haciendo de firewall—, ya sabes cómo va esto: funciona perfectamente hasta el día que no funciona. Y cuando algo falla a las once de la noche, no quieres pasarte media hora buscando en Google cuál era el comando para ver qué proceso se está comiendo toda la RAM o por qué un servicio no levanta.
Probablemente ya conoces alguno de los que aparecen aquí. Quizá usas top porque siempre ha estado ahí, pero no sabes que ss es lo que deberías usar en lugar de netstat en sistemas modernos, o que journalctl te da los logs de un servicio filtrados por tiempo sin tener que buscar ficheros a mano. No es que lo hayas hecho mal: simplemente nadie te hace la lista de los que de verdad se repiten.
Esto es lo que yo abro en terminal antes de tocar cualquier cosa en mis servidores. No es una lista exhaustiva —hay docenas de comandos útiles y cada homelab tiene sus manías—, pero sí son los que me han sacado de apuros más veces y los que ya no busco en ningún sitio. Si tienes cualquier máquina Linux bajo tu control, alguno de estos te va a resultar útil hoy mismo.
Por qué importa
Procesos en tiempo real
htop muestra CPU y memoria por proceso. Más cómodo que top para identificar qué está comiendo recursos ahora mismo.
Red sin netstat
ss (parte de iproute2) reemplaza a netstat en kernels modernos. Lista puertos en escucha y conexiones activas en un comando.
Logs filtrados por servicio
journalctl -u <servicio> –since ‘1 hour ago’ acota el ruido. Sin sudo puede estar restringido según la distro.
Disco sin adivinar
ncdu muestra el árbol de directorios interactivo para localizar ficheros grandes. No viene instalado por defecto; está en los repos oficiales de Debian, Ubuntu y Arch.
Monitorizar procesos sin morir en el intento
La herramienta de referencia es htop. A diferencia de top, que viene instalado por defecto en casi cualquier distro, htop ofrece una interfaz más visual con colores, barras de CPU por núcleo y navegación con teclado. Puedes filtrar procesos por nombre y hacer kill directamente desde la interfaz sin buscar el PID primero.
htop
# si no está instalado:
sudo apt install htop
top # alternativa sin instalar nada
Para un proceso concreto sin abrir interfaz interactiva, ps aux | grep nombre da una snapshot rápida. Útil en scripts o cuando solo necesitas comprobar si algo está corriendo.
En mi Proxmox noto enseguida cuándo una VM se descontrola porque la carga se dispara en htop antes de que los logs digan nada útil.
Red: qué está pasando y en qué puerto
Listar conexiones activas con ss
netstat era el estándar durante años, pero en Debian y Ubuntu recientes puede no venir instalado por defecto —el paquete net-tools ya no está en la instalación base—. Su sustituto es ss, incluido en iproute2, disponible por defecto desde el kernel 2.6.
ss -tulpn # TCP y UDP en escucha, con proceso y número de puerto
ss -an # todas las conexiones activas
Identificar qué proceso ocupa un puerto
Cuando un servicio no arranca porque el puerto ya está en uso, lsof te dice quién es el culpable:
sudo lsof -i :8080
El sudo es necesario para ver procesos de otros usuarios. Sin él, solo ves los tuyos propios, que en muchos casos no es suficiente para diagnosticar el problema.
Configuración de red con ip
ifconfig y route están obsoletos en distribuciones modernas. Sus sustitutos directos:
ip a— interfaces y direcciones IP asignadasip route— tabla de rutas activaip route get 8.8.8.8— qué interfaz y gateway usaría para llegar a esa IP
Cuando monté mi VLAN de IoT,
ip routeme confirmó en dos segundos que el tráfico entre VLANs no pasaba por donde debía.
Logs y servicios con systemd
Controlar servicios con systemctl
Si tu distro usa systemd —Debian desde la versión 8, Ubuntu desde 15.04, RHEL y CentOS desde la 7—, este es el comando central para gestionar servicios:
systemctl status nginx
systemctl start nginx
systemctl stop nginx
systemctl restart nginx
systemctl enable nginx # que arranque al inicio del sistema
systemctl disable nginx # quitarlo del arranque
Para ver de un vistazo qué servicios hay en fallo:
systemctl --failed
Filtrar logs con journalctl
journalctl da acceso a los logs del journal de systemd. Lo que más uso en el día a día:
journalctl -u nginx --since '1 hour ago'
journalctl -u nginx -n 50 --no-pager # últimas 50 líneas
journalctl -f # seguir en tiempo real
En sistemas con restricciones de acceso a logs necesitarás sudo. Una alternativa sin privilegios permanentes es añadir tu usuario al grupo systemd-journal:
sudo usermod -aG systemd-journal $USER
Tengo un contenedor LXC con Home Assistant que cada pocas semanas pierde conexión con un dispositivo Zigbee.
journalctl -u home-assistant --since yesterdayme da el contexto exacto sin buscar en ficheros de log dispersos.
Disco: cuánto queda y dónde se fue
Uso por sistema de ficheros con df
df -h muestra el uso por partición en formato legible. La columna Use% es la que interesa: cuando llega al 90%+, toca investigar antes de que algo empiece a fallar sin mensajes de error claros.
df -h
Localizar el culpable con du y ncdu
du calcula el tamaño de directorios. Para una primera pasada rápida:
du -sh /var/log # tamaño total de un directorio
du -sh /* 2>/dev/null # primer nivel desde la raíz
Para exploración interactiva, ncdu es mucho más cómodo. No viene instalado por defecto, pero está en los repositorios oficiales de Debian, Ubuntu, Alpine y Arch:
sudo apt install ncdu
ncdu /
Con ncdu navegas por el árbol con las flechas del cursor, ves qué carpeta pesa más y puedes borrar ficheros directamente desde la interfaz, con confirmación previa.
En mi NAS casero, un directorio de backups duplicados de Proxmox ocupaba 200 GB sin que nadie lo hubiese visto en meses. Con ncdu lo localicé en menos de un minuto.
Copias y sesiones que no desaparecen
rsync para sincronización incremental
rsync es la forma estándar de sincronizar ficheros local o remotamente de forma incremental. Solo transfiere lo que ha cambiado, con verificación y compresión opcionales:
rsync -avz /origen/ usuario@servidor:/destino/
rsync -avz --delete /origen/ /backup/ # borra en destino lo que ya no existe en origen
El flag -a preserva permisos, timestamps y enlaces simbólicos. El -z comprime en tránsito, útil sobre conexiones lentas. El --delete hay que usarlo con cuidado: lo que no esté en el origen desaparece del destino sin confirmación adicional.
Para backups programados, rsync dentro de un cron o un systemd timer es una solución sólida sin dependencias externas.
tmux para sesiones SSH persistentes
Cuando trabajas por SSH, una desconexión mata el proceso en curso. tmux mantiene la sesión viva en el servidor aunque te desconectes:
tmux new -s mi-sesion # nueva sesión con nombre
tmux attach -t mi-sesion # reconectar a una sesión existente
tmux ls # listar sesiones activas
Dentro de tmux, Ctrl+b d hace detach sin matar la sesión. Con eso y saber reconectar ya tienes el 80% del valor para el día a día. El resto de atajos los vas incorporando cuando los necesitas.
Lanzo siempre las actualizaciones largas de sistema dentro de tmux. Si la VPN cae a mitad del dist-upgrade, cuando reconecto el proceso sigue corriendo sin ningún problema.
Preguntas frecuentes
Q: ¿Vale ss para ver qué puerto está ocupando un proceso?
A: ss es la herramienta correcta para eso en kernels modernos; forma parte de iproute2 y viene instalado por defecto desde Linux 2.6. Combínalo con lsof -i : si necesitas cruzar el PID con el nombre del proceso. En algunos modos puede requerir sudo.
Q: ¿Cuándo uso journalctl en vez de mirar /var/log directamente?
A: Siempre que el servicio esté gestionado por systemd, journalctl es más cómodo y potente: filtra por unidad, rango temporal o nivel de severidad sin grep manual. journalctl -u --since '1 hour ago' te da solo lo relevante en segundos.
Q: ¿Por qué ncdu si ya existe du?
A: du vuelca un árbol de texto que cuesta leer en filesystems grandes. ncdu presenta ese mismo árbol de forma interactiva y navegable, lo que hace trivial localizar qué directorio se está comiendo el disco. No viene instalado por defecto, pero está en los repositorios oficiales de Debian, Ubuntu, Alpine y Arch.
Q: ¿Qué pasa si uso ifconfig en vez de ip a en Debian reciente?
A: Puede que ifconfig directamente no exista: en Debian/Ubuntu recientes el paquete net-tools no se instala por defecto. ip a e ip route son los equivalentes modernos incluidos en iproute2, así que en un sistema fresco son los que vas a encontrar sin instalar nada extra.
Q: ¿Cómo evito que una sesión SSH larga muera a mitad de proceso?
A: Lanzando el trabajo dentro de una sesión tmux antes de ejecutarlo. Si la conexión cae, el proceso sigue corriendo en el servidor y puedes reconectarte con tmux attach. Es especialmente útil en actualizaciones largas, rsync de varios GB o compilaciones que pueden durar horas.











Deja una respuesta