Linux & Sysadmin
Guía rápida de comandos vitales para administración de sistemas Linux: gestión de logs, crons, procesos, backups y permisos.
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