Comandos de Terminal Esenciales
Guía intermedio-avanzada para Debian 13 "Trixie"
La terminal no es solo una ventana de texto: es el sistema nervioso central de tu máquina. En Debian 13 "Trixie", dominar los comandos correctos te da un control granular sobre memoria, procesos, red, almacenamiento y servicios que ninguna interfaz gráfica puede igualar. Esta guía cubre los comandos que todo usuario intermedio-avanzado debe tener incorporados como reflejos, explicando qué hacen, por qué importan y cuándo usarlos en situaciones reales.
Desde liberar caché de RAM hasta rastrear conexiones de red, gestionar servicios con systemd o diagnosticar cuellos de botella en disco — todo con ejemplos prácticos y salida real.
- 01 — Memoria RAM y Caché
- 02 — Gestión de Procesos
- 03 — Almacenamiento y Disco
- 04 — Red y Conectividad
- 05 — Servicios con Systemd
- 06 — Logs y Diagnóstico
- 07 — Usuarios y Permisos
- 08 — Rendimiento del Sistema
- 09 — Archivos y Búsqueda
- 10 — Comandos de Emergencia
Memoria RAM y Caché
Linux gestiona la RAM de forma agresiva: usa la memoria libre como caché de disco (page cache) para acelerar operaciones. Esto es normal y deseable. Sin embargo, en entornos con poca memoria o después de operaciones pesadas, puedes necesitar inspeccionarla o liberarla manualmente.
Inspeccionar el uso de memoria
# Vista rápida y legible (human-readable) free -h # Vista detallada con totales y periodicidad cada 2 segundos free -h -s 2 # Información completa del kernel sobre memoria cat /proc/meminfo # Solo campos clave de /proc/meminfo grep -E 'MemTotal|MemFree|MemAvailable|Cached|SwapTotal|SwapFree' /proc/meminfo
available es la que realmente importa — estima cuánta memoria puedes usar sin necesidad de swap. free es engañosamente baja porque incluye solo memoria literalmente vacía, no el caché reutilizable.
Liberar caché de memoria RAM
# Paso 1: sincronizar escrituras pendientes al disco sync # Paso 2: liberar page cache solamente echo 1 | sudo tee /proc/sys/vm/drop_caches # Paso 2 alternativo: liberar dentries e inodes también echo 2 | sudo tee /proc/sys/vm/drop_caches # Paso 2 alternativo: liberar TODO (page cache + dentries + inodes) echo 3 | sudo tee /proc/sys/vm/drop_caches
Gestión de Swap
# Ver dispositivos swap activos y uso swapon --show # Estadísticas detalladas de swap cat /proc/swaps # Desactivar swap completamente (libera swap hacia RAM) sudo swapoff -a # Reactivar swap desde /etc/fstab sudo swapon -a # Ajustar swappiness (0=menos swap, 100=más agresivo) # Valor recomendado para desktop con bastante RAM: 10 sudo sysctl vm.swappiness=10 # Ver valor actual de swappiness cat /proc/sys/vm/swappiness
vm.swappiness=10 al archivo /etc/sysctl.conf y ejecuta sudo sysctl -p para aplicarlo sin reiniciar.
Identificar qué procesos consumen más RAM
# Procesos ordenados por memoria (columna %MEM), top 10 ps aux --sort=-%mem | head -11 # Memoria real (RSS) de cada proceso, ordenada ps -eo pid,ppid,cmd,%mem,rss --sort=-%mem | head -15 # smem: memoria real sin contar shared libraries dos veces sudo apt install smem smem -r -s pss | head -15
Gestión de Procesos
Controlar procesos es una de las habilidades más críticas en administración de sistemas. Desde inspeccionar qué corre en tu máquina hasta matar procesos colgados o ajustar prioridades de CPU.
Herramientas de monitoreo interactivo
M para ordenar por memoria, P por CPU, k para matar un proceso por PID, q para salir.sudo apt install htop. Usa F5 para árbol, F9 para señales.sudo apt install btop. Interfaz completamente interactiva.sudo apt install atop.Inspección y control de procesos
# Listar todos los procesos con detalle ps aux # Árbol de procesos (ver jerarquía padre-hijo) pstree -p # Buscar proceso por nombre pgrep -la firefox # Ver proceso específico por PID ps -p 1234 -o pid,ppid,cmd,%cpu,%mem,etime # Matar proceso por nombre (envía SIGTERM primero) pkill firefox # Forzar terminación (SIGKILL — último recurso) pkill -9 firefox # Matar por PID específico kill -SIGTERM 1234 kill -9 1234 # forzado # Matar todos los procesos de un usuario sudo pkill -u nombreusuario
Prioridades de CPU con nice y renice
# Ejecutar un comando con baja prioridad (nice va de -20 a 19) # Valor alto = menor prioridad; -20 = máxima prioridad (root) nice -n 15 tar -czf backup.tar.gz /home/ # Cambiar prioridad de un proceso ya en ejecución sudo renice -n -5 -p 1234 # Cambiar prioridad de todos los procesos de un usuario sudo renice 10 -u alejandro # Ver prioridades (NI = nice value, PR = prioridad real) ps -eo pid,ni,pri,cmd --sort=ni | head -20
Procesos en segundo plano
# Enviar proceso al background comando & # Ver jobs en background de la sesión actual jobs -l # Traer al foreground el job número 1 fg %1 # Suspender el proceso activo (Ctrl+Z) y mandarlo al background # Ctrl+Z para suspender bg %1 # Ejecutar comando que sobrevive al cierre del terminal nohup python3 script.py > salida.log 2>&1 & # Usar disown para desligar un job existente del shell disown %1
Almacenamiento y Disco
El espacio en disco y la salud de los dispositivos de almacenamiento son críticos. Desde ver cuánto espacio queda hasta identificar qué directorio está consumiendo gigabytes inesperados.
Espacio en disco
# Ver espacio en todas las particiones montadas df -h # Incluir tipo de sistema de archivos df -hT # Ver uso de inodos (útil si el disco "está lleno" sin razón obvia) df -i # Tamaño de un directorio específico du -sh /var/log # Top 10 directorios más grandes en / du -h --max-depth=1 / 2>/dev/null | sort -rh | head -11 # Buscar los archivos más grandes en el sistema find / -type f -size +100M -exec ls -lh {} \; 2>/dev/null | sort -k5 -rh | head -15 # ncdu: navegador interactivo de uso de disco (recomendado) sudo apt install ncdu ncdu /
ncdu es la herramienta más eficiente para encontrar qué está ocupando espacio. Navega directorios con las flechas, entra con Enter y sale con q. Mucho más rápido que du manual.
Limpieza de espacio
# Limpiar paquetes descargados por apt (caché de paquetes) sudo apt clean # Eliminar solo paquetes obsoletos del caché sudo apt autoclean # Eliminar dependencias huérfanas (ya no necesarias) sudo apt autoremove --purge # Ver tamaño del caché de apt antes de limpiar du -sh /var/cache/apt/archives/ # Limpiar logs del journal de systemd (mantener solo últimos 7 días) sudo journalctl --vacuum-time=7d # Limpiar logs del journal limitando tamaño total sudo journalctl --vacuum-size=200M # Ver cuánto ocupa el journal actualmente journalctl --disk-usage # Eliminar kernels viejos (cuidado: mantén al menos el actual) sudo apt autoremove --purge linux-image-*-old
Salud del disco con S.M.A.R.T.
# Instalar smartmontools sudo apt install smartmontools # Estado general del disco (reemplaza sda por tu dispositivo) sudo smartctl -H /dev/sda # Informe completo S.M.A.R.T. sudo smartctl -a /dev/sda # Listar todos los dispositivos de bloque lsblk # Con información de sistema de archivos y tamaño lsblk -f # Velocidad de lectura del disco (benchmark rápido) sudo hdparm -tT /dev/sda # Para NVMe SSD sudo apt install nvme-cli sudo nvme smart-log /dev/nvme0
Montar y desmontar dispositivos
# Ver todos los dispositivos montados mount | grep -v tmpfs # Montar una partición manualmente sudo mount /dev/sdb1 /mnt/datos # Desmontar sudo umount /mnt/datos # Ver UUID de dispositivos (útil para /etc/fstab) blkid
Red y Conectividad
Diagnosticar problemas de red, ver conexiones activas, monitorear tráfico y configurar interfaces son tareas cotidianas. Debian 13 usa el stack de herramientas moderno ip (de iproute2) en lugar del obsoleto ifconfig.
Inspección de interfaces y conectividad
# Ver todas las interfaces de red con IPs ip addr ip a # forma corta # Ver tabla de enrutamiento ip route ip route show default # ver gateway por defecto # Estado detallado de una interfaz específica ip link show eth0 # Activar/desactivar interfaz sudo ip link set eth0 up sudo ip link set eth0 down # Ping con número limitado de paquetes ping -c 4 8.8.8.8 # Traceroute con IP (ver ruta de paquetes) traceroute debian.org mtr debian.org # versión interactiva combinada # Resolver DNS manualmente dig debian.org dig +short debian.org # solo IPs nslookup debian.org
Conexiones activas y puertos
# Ver puertos en escucha (ss reemplaza a netstat) ss -tlnp # TCP, listening, numérico, con proceso ss -ulnp # UDP ss -tlnp -4 # solo IPv4 # Ver todas las conexiones establecidas ss -tnp state established # Equivalente con netstat (si está instalado) sudo apt install net-tools netstat -tlnp # Ver qué proceso usa un puerto específico sudo ss -tlnp sport = :80 sudo lsof -i :80 # Ver estadísticas de red por interfaz ip -s link cat /proc/net/dev
Monitoreo de tráfico en tiempo real
# nload: gráfica de tráfico por interfaz sudo apt install nload nload eth0 # iftop: monitor interactivo estilo top para red sudo apt install iftop sudo iftop -i eth0 # nethogs: ancho de banda por proceso sudo apt install nethogs sudo nethogs eth0 # Captura de paquetes con tcpdump sudo tcpdump -i eth0 -n -c 50 # 50 paquetes sudo tcpdump -i eth0 port 443 # solo HTTPS
Transferencia de archivos desde terminal
# Descargar archivo wget https://ejemplo.com/archivo.tar.gz curl -O https://ejemplo.com/archivo.tar.gz # Copiar archivos por SSH (scp) scp archivo.txt usuario@servidor:/ruta/destino/ scp -r directorio/ usuario@servidor:/ruta/destino/ # rsync: sincronización eficiente (solo transfiere cambios) rsync -avz --progress origen/ usuario@servidor:/destino/ # rsync local: copia inteligente de directorios rsync -avz /home/alejandro/ /backup/alejandro/
Servicios con Systemd
Debian 13 usa systemd como sistema de inicio. Comprender systemctl y journalctl es fundamental para administrar servicios, depurar arranques lentos y gestionar el sistema de forma profesional.
Control de servicios
# Estado de un servicio systemctl status nginx # Iniciar / detener / reiniciar sudo systemctl start nginx sudo systemctl stop nginx sudo systemctl restart nginx # Recargar configuración sin reiniciar el proceso sudo systemctl reload nginx # Habilitar/deshabilitar inicio automático con el sistema sudo systemctl enable nginx sudo systemctl disable nginx # Enmascarar servicio (impedir que sea iniciado por cualquier medio) sudo systemctl mask bluetooth sudo systemctl unmask bluetooth # Listar todos los servicios y su estado systemctl list-units --type=service systemctl list-units --type=service --state=failed # Ver servicios habilitados en el arranque systemctl list-unit-files --type=service --state=enabled
Diagnóstico de arranque
# Ver tiempo total de arranque systemd-analyze # Ver los servicios que más tardan en arrancar systemd-analyze blame # Generar gráfica SVG del arranque systemd-analyze plot > boot-graph.svg # Ver dependencias críticas del arranque systemd-analyze critical-chain # Verificar salud general de systemd systemctl --failed
Gestión de targets y runlevels
# Ver el target actual (equivalente a runlevel) systemctl get-default # Cambiar target por defecto (ej: arrancar sin GUI) sudo systemctl set-default multi-user.target # sin GUI sudo systemctl set-default graphical.target # con GUI # Cambiar de target en caliente (sin reiniciar) sudo systemctl isolate multi-user.target # Apagar / reiniciar el sistema correctamente sudo systemctl poweroff sudo systemctl reboot sudo systemctl suspend # suspender a RAM sudo systemctl hibernate # hibernar a disco
Logs y Diagnóstico
Leer logs de forma efectiva es lo que separa a un usuario avanzado de uno intermedio. journalctl centraliza todos los logs del sistema en Debian 13 con Systemd.
journalctl — el centro de logs
# Ver logs en tiempo real (equivale a tail -f /var/log/syslog) journalctl -f # Logs desde el último arranque journalctl -b # Logs del arranque anterior journalctl -b -1 # Logs de un servicio específico journalctl -u nginx journalctl -u nginx -f # en tiempo real # Solo errores y mensajes críticos journalctl -p err journalctl -p crit # Logs de los últimos 30 minutos journalctl --since "30 minutes ago" # Logs entre fechas específicas journalctl --since "2025-01-01 10:00" --until "2025-01-01 11:00" # Buscar patrón en logs journalctl -b | grep -i "error\|fail\|warn" # Logs del kernel (equivale a dmesg) journalctl -k dmesg --level=err,warn -T # con timestamps legibles
Archivos de log tradicionales
| Archivo | Contenido |
|---|---|
| /var/log/syslog | Log general del sistema (mensajes de servicios y kernel) |
| /var/log/auth.log | Autenticaciones, sudo, SSH, intentos de acceso fallidos |
| /var/log/dpkg.log | Historial de instalaciones y desinstalaciones de paquetes |
| /var/log/apt/history.log | Historial de comandos apt ejecutados |
| /var/log/kern.log | Mensajes del kernel de Linux |
| /var/log/Xorg.0.log | Log del servidor de display (si usas X11) |
| ~/.local/share/sddm/wayland-session.log | Log de sesión Wayland (KDE Plasma) |
Usuarios y Permisos
Gestión de usuarios y grupos
# Ver usuario actual y grupos a los que pertenece whoami id groups # Listar todos los usuarios del sistema cat /etc/passwd | cut -d: -f1 getent passwd | grep -v nologin # solo usuarios con shell # Crear usuario nuevo sudo adduser nuevo_usuario # Agregar usuario a un grupo (ej: sudo, docker, audio) sudo usermod -aG sudo nuevo_usuario sudo usermod -aG docker,audio,video alejandro # Ver usuarios conectados actualmente who w # con más detalle (actividad, idle time) # Historial de inicios de sesión last | head -20 lastlog # último acceso de todos los usuarios
Permisos de archivos
# Ver permisos en formato detallado ls -la /ruta/al/archivo stat archivo.txt # Cambiar permisos (notación octal) # 7=rwx, 6=rw-, 5=r-x, 4=r--, 0=--- chmod 755 script.sh # rwxr-xr-x chmod 644 config.cfg # rw-r--r-- chmod 600 clave.pem # rw------- (solo propietario) # Cambiar permisos de forma recursiva chmod -R 755 directorio/ # Notación simbólica chmod u+x script.sh # añadir ejecución al usuario chmod o-r privado.txt # quitar lectura a otros chmod a+r publico.txt # lectura para todos # Cambiar propietario y grupo sudo chown alejandro:alejandro archivo.txt sudo chown -R www-data:www-data /var/www/ # Ver y cambiar umask (permisos por defecto al crear archivos) umask umask 022 # archivos: 644, directorios: 755
sudo y escalada de privilegios
# Ver qué puede hacer tu usuario con sudo sudo -l # Ejecutar shell como root temporalmente sudo -i # shell interactivo de root sudo -s # shell de root con entorno actual # Ejecutar comando como otro usuario sudo -u www-data whoami # Ver intentos fallidos de sudo grep 'sudo' /var/log/auth.log | grep FAILED # Editar sudoers de forma segura sudo visudo
Rendimiento del Sistema
CPU y carga del sistema
# Ver load average (promedio de carga últimos 1/5/15 minutos) uptime # Información de CPUs (núcleos, frecuencias, caché) lscpu # Uso de CPU en tiempo real por núcleo mpstat -P ALL 1 # necesita: sudo apt install sysstat # Estadísticas de CPU, E/S y más cada segundo vmstat 1 # iostat: estadísticas de disco y CPU iostat -x 1 # Frecuencia actual de la CPU (util en laptops) cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq # Temperatura del CPU (necesita lm-sensors) sudo apt install lm-sensors sudo sensors-detect # detectar sensores (solo primera vez) sensors # ver temperaturas # Información completa del hardware sudo lshw -short inxi -Fxz # necesita: sudo apt install inxi
Monitoreo avanzado con sar
# sar: System Activity Reporter — registra rendimiento histórico sudo apt install sysstat # Habilitar recolección automática sudo systemctl enable sysstat sudo systemctl start sysstat # Ver uso de CPU de las últimas horas sar -u # Ver uso de memoria histórico sar -r # Ver actividad de disco sar -d # Ver estadísticas de red sar -n DEV # strace: rastrear llamadas al sistema de un proceso # Útil para diagnosticar procesos bloqueados o lentos sudo strace -p 1234 # adjuntarse a proceso existente strace ls /tmp # rastrear comando nuevo
Optimizar rendimiento del kernel
# Ver todos los parámetros del kernel sysctl -a # Parámetros de red útiles para mejorar rendimiento sudo sysctl net.core.rmem_max=16777216 sudo sysctl net.core.wmem_max=16777216 # Reducir uso de swap (recomendado para SSD con mucha RAM) sudo sysctl vm.swappiness=10 # Presión de caché del VFS (recomendado para SSD) sudo sysctl vm.vfs_cache_pressure=50 # Ver cambios sin reiniciar sudo sysctl -p /etc/sysctl.conf
Archivos y Búsqueda
Búsqueda eficiente
# find: búsqueda por nombre find /home -name "*.py" # Archivos modificados en las últimas 24 horas find /etc -mtime -1 # Archivos con permisos específicos find / -perm -4000 -type f 2>/dev/null # SUID bits # Ejecutar acción en resultados de find find /tmp -name "*.tmp" -delete # locate: búsqueda instantánea desde base de datos sudo apt install mlocate sudo updatedb # actualizar la base de datos locate config.ini locate -i readme # sin distinción mayúsculas # grep: buscar contenido dentro de archivos grep -r "password" /etc/ 2>/dev/null grep -rn -i "error" /var/log/ # con número de línea grep -l "TODO" *.py # solo nombres de archivos # ripgrep: grep moderno, mucho más rápido sudo apt install ripgrep rg "def main" /home/alejandro/proyectos/
Compresión y archivos
# Crear archivo tar comprimido con gzip tar -czf backup.tar.gz /home/alejandro/ # Extraer tar -xzf backup.tar.gz tar -xzf backup.tar.gz -C /destino/ # Ver contenido sin extraer tar -tzf backup.tar.gz # Compresión con bzip2 (mejor ratio, más lento) tar -cjf backup.tar.bz2 directorio/ # Compresión con zstd (excelente balance velocidad/ratio) tar --zstd -cf backup.tar.zst directorio/ # Zip / Unzip zip -r archivo.zip directorio/ unzip archivo.zip -d /destino/
Comandos de Emergencia
Estos son los comandos que necesitas cuando el sistema está en estado crítico: GUI colgada, proceso sin respuesta, sistema irresponsivo o disco lleno.
Sistema irresponsivo
# Matar proceso por nombre de forma segura pkill -SIGTERM proceso # primero intentar graceful pkill -9 proceso # si no responde, forzar # OOM Killer: forzar liberación de memoria matando el mayor proceso # Ver qué proceso tiene más memoria ps aux --sort=-%mem | head # Terminar sesión de X / Wayland (mata el servidor gráfico) # En X11: Ctrl+Alt+Backspace (si está habilitado) # Desde TTY (Ctrl+Alt+F2): sudo pkill -9 -t tty2 # matar todo lo de la tty2 # Magic SysRq — reinicio de emergencia seguro del kernel # Alt+SysRq + R, E, I, S, U, B (REISUB) # R: retomar teclado | E: SIGTERM todo | I: SIGKILL todo # S: sync disco | U: remount read-only | B: reboot # Habilitar SysRq: echo 1 | sudo tee /proc/sys/kernel/sysrq
Diagnóstico rápido de sistema
# ¿Cuánto tiempo lleva encendido? uptime # ¿Hay espacio en disco? df -h | grep -v tmpfs # ¿Hay servicios fallidos? systemctl --failed # ¿Hay errores en el kernel? dmesg --level=err -T | tail -20 # ¿Qué proceso consume más CPU/RAM en este momento? ps aux --sort=-%cpu | head -6 ps aux --sort=-%mem | head -6 # ¿Hay conexiones sospechosas abiertas? ss -tnp state established # Resumen general del sistema en un comando inxi -Fxz # sudo apt install inxi
Recuperar contraseña de root
# Al arrancar: en GRUB, editar la entrada del kernel # Añadir al final de la línea linux: "single" o "init=/bin/bash" # Una vez en el shell de root: # Montar el sistema de archivos en modo escritura mount -o remount,rw / # Cambiar contraseña de root passwd root # Sincronizar y reiniciar sync exec /sbin/init
grub-mkpasswd-pbkdf2 y configurándolo en /etc/grub.d/40_custom.
Referencia Rápida
Los comandos más utilizados en el día a día, organizados por categoría:
free -h · estado de RAMecho 3 | sudo tee /proc/sys/vm/drop_caches · limpiar cachéps aux --sort=-%mem | head · top por RAM
htop / btop · monitor interactivopkill -9 nombre · matar procesonice -n 15 cmd · baja prioridad
df -h · espacio en particionesncdu / · navegador de discosudo apt autoremove --purge · limpiar
ip a · interfacesss -tlnp · puertos en escuchasudo nethogs eth0 · tráfico por proceso
systemctl status serviciosystemctl --failed · ver fallossystemd-analyze blame · boot lento
journalctl -f · tiempo realjournalctl -b -p err · errores del bootdmesg -T --level=err · kernel