Gontzal Bilbao

Gontzal Bilbao

  • Email Email
  • Ubicación País Vasco, ES

Linux & Sysadmin


Guía rápida de comandos vitales para administración de sistemas Linux: gestión de logs, crons, procesos, backups y permisos.

LinuxSysadminBashLogs

Esta guía agrupa los comandos más utilizados en el día a día para la gestión y resolución de problemas en instancias Linux de producción.

1. Gestión y Revisión de Logs

En entornos de producción, revisar logs es el primer paso para diagnosticar cualquier fallo en servicios, aplicaciones o despliegues.

journalctl (Systemd Logs)

El sistema centralizado de logs de systemd. Permite filtrar de forma muy granular.

# Ver los logs en tiempo real de un servicio específico (ej. Nginx)
journalctl -u nginx.service -f

# Ver logs desde una fecha concreta
journalctl --since "2026-05-03 10:00:00"

# Ver solo los errores (prioridad 3 o menor) de un servicio
journalctl -u mi-app.service -p 3 -xb

# Ver logs del kernel (útil para fallos de hardware o memoria OOM)
journalctl -k

tail, grep y Archivos de Log tradicionales

Para aplicaciones que escriben en /var/log o en sus propios archivos .log.

# Ver las últimas 50 líneas y seguir el archivo en tiempo real
tail -n 50 -f /var/log/syslog

# Buscar un error específico en un log gigante, mostrando 2 líneas antes y después del "match"
grep -C 2 "Exception" /var/log/mi-app/error.log

# Buscar errores de forma insensible a mayúsculas/minúsculas
grep -i "error" /var/log/auth.log

# Contar cuántas veces aparece una IP en los logs de acceso de Apache/Nginx
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -10

2. Tareas Programadas (Cron)

Cron es esencial para automatizar backups, limpieza de temporales o scripts de mantenimiento.

Comandos de Crontab

# Editar el crontab del usuario actual
crontab -e

# Listar las tareas programadas del usuario actual
crontab -l

# Editar el crontab de un usuario específico (requiere sudo)
sudo crontab -u root -e

Sintaxis de Cron

El formato es: Minuto Hora DíaDelMes Mes DíaDeLaSemana Comando

# Ejecutar un script todos los días a las 02:30 AM
30 2 * * * /ruta/al/script-backup.sh

# Ejecutar algo cada 15 minutos
*/15 * * * * /ruta/al/script.sh

# Ejecutar cada lunes a las 8:00 AM y guardar la salida (stdout y stderr) en un log
0 8 * * 1 /ruta/al/mantenimiento.sh >> /var/log/mantenimiento.log 2>&1

3. Procesos y Rendimiento

Cuando un servidor va lento o no responde, necesitas identificar qué está consumiendo recursos.

Análisis de Recursos

# Ver procesos interactivos en tiempo real (CPU, Memoria)
htop # (Si no está instalado, usar 'top')

# Ver el uso de memoria RAM (en Megabytes)
free -m

# Ver el espacio en disco de forma legible
df -h

Gestión de Procesos

# Buscar el PID de un proceso por su nombre
ps aux | grep node

# Forzar el cierre de un proceso por su PID
kill -9 12345

# Forzar el cierre de todos los procesos con un nombre concreto
killall -9 php-fpm

# Ver qué proceso está escuchando en un puerto específico (ej. puerto 8080)
netstat -tulpn | grep 8080
# o alternativamente:
lsof -i :8080

4. Gestión de Archivos y Backups

Comandos útiles para mover, comprimir y respaldar datos de forma segura.

Compresión (tar)

# Comprimir un directorio en formato .tar.gz
tar -czvf backup-app-2026.tar.gz /var/www/mi-app/

# Descomprimir un archivo .tar.gz en el directorio actual
tar -xzvf archivo.tar.gz

Sincronización y Copias a otras máquinas (rsync y scp)

rsync es ideal para backups porque solo transfiere los archivos que han cambiado (copia incremental).

# Sincronizar directorio local con un servidor remoto
rsync -avz /directorio/local/ usuario@ip-remota:/directorio/remoto/

# Copiar un archivo a un servidor remoto mediante SSH
scp archivo.zip usuario@ip-remota:/ruta/destino/

5. Permisos y Propietarios

Problemas comunes (como “403 Forbidden” en servidores web) se resuelven ajustando permisos.

# Cambiar el propietario y el grupo de un directorio de forma recursiva
sudo chown -R www-data:www-data /var/www/mi-app/

# Dar permisos de lectura/escritura/ejecución al propietario, y lectura/ejecución al resto
sudo chmod -R 755 /var/www/mi-app/

# Dar permiso de ejecución a un script específico
chmod +x script.sh