Guía Práctica de Linux: Comandos Esenciales, Permisos y Gestión de Servidores

Tener bases sólidas de terminal y administración de entornos Linux es indispensable para desplegar aplicaciones, revisar logs y mantener servidores de producción sin depender de interfaces gráficas. Esta guía reúne los comandos y conceptos clave organizados para resolver las tareas y bloqueos más comunes del día a día.


1. Navegación, Inspección y Búsqueda

Moverse con agilidad y encontrar archivos de configuración, logs o variables de entorno rápidamente:

  • Listado detallado con tamaños legibles y archivos ocultos:

    bash
    ls -lah

  • Buscar archivos por nombre recursivamente:

    bash
    find /var/www -type f -name "*.env"

  • Buscar patrones de texto dentro de archivos:

    bash
    grep -rnw '/etc/nginx/' -e 'proxy_pass'

  • Monitoreo de logs en tiempo real (útil para debuggear requests o errores de inicio):

    bash
    tail -f -n 50 /var/log/syslog


2. Monitoreo de Recursos y Procesos

Identificar saturación de CPU, fugas de memoria o puertos ocupados:

  • Ver consumo global en tiempo real:

    bash
    htop
      # O el clásico top si no cuentas con htop instalado:
      top

  • Estado de memoria RAM y Swap en formato legible:

    bash
    free -h

  • Espacio en disco disponible por partición:

    bash
    df -h

  • Ver cuánto espacio ocupa una carpeta o archivo específico:

    bash
    du -sh /var/lib/docker

  • Identificar procesos que consumen un puerto específico:

    bash
    sudo lsof -i :8080
      # Alternativa con ss (sockets):
      sudo ss -tulpn | grep 8080

  • Terminar procesos conflictivos o colgados:

    bash
    kill -15 <PID>   # Cierre graceful (SIGTERM)
      kill -9 <PID>    # Cierre forzado inmediato (SIGKILL)


3. Permisos y Propiedad (chmod & chown)

El motivo más habitual de errores 403 Forbidden o fallos de escritura en aplicaciones web:

Representación octal básica

  • r (lectura) = 4
  • w (escritura) = 2
  • x (ejecución) = 1

Comandos recomendados:

  • Cambiar propietario y grupo recursivamente:

    bash
    sudo chown -R www-data:www-data /var/www/app

  • Permisos recomendados estándar (directorios 755, archivos 644):

    bash
    # Carpetas: ejecutables para poder entrar y listar su contenido
      find /var/www/app -type d -exec chmod 755 {} +
    
      # Archivos: lectura y escritura para el dueño, lectura para los demás
      find /var/www/app -type f -exec chmod 644 {} +

  • Dar permisos de ejecución a un script específico:

    bash
    chmod +x deploy.sh


4. Gestión de Servicios con Systemd

Controlar daemons, APIs, bases de datos o workers en segundo plano:

  • Control de ciclo de vida del servicio:

    bash
    sudo systemctl start mi-servicio
      sudo systemctl stop mi-servicio
      sudo systemctl restart mi-servicio
      sudo systemctl reload mi-servicio

  • Habilitar arranque automático tras reinicio del sistema:

    bash
    sudo systemctl enable mi-servicio

  • Ver estado actual e información de salida reciente:

    bash
    sudo systemctl status mi-servicio

  • Consultar logs completos en tiempo real vía journalctl:

    bash
    journalctl -u mi-servicio -f --no-tail


5. Transferencia de Archivos y SSH Práctico

  • Copiar archivos hacia un servidor remoto de forma segura:

    bash
    scp -P 22 archivo.tar.gz usuario@tu-servidor-ip:/home/usuario/

  • Sincronizar carpetas excluyendo directorios pesados o dependencias:

    bash
    rsync -avz --exclude 'node_modules' --exclude '.git' ./app/ usuario@tu-servidor-ip:/var/www/app/

  • Crear un alias rápido en tu máquina local (~/.ssh/config):

    ssh
      Host vps-prod
          HostName 123.45.67.89
          User root
          IdentityFile ~/.ssh/id_ed25519
      
    Permite conectarte directamente ejecutando:
    bash
    ssh vps-prod