¿Cómo ver los logs del sistema en Linux?
¡Hola! Si estás administrando un servidor Linux, tarde o temprano necesitarás revisar los registros o logs del sistema. Son como el “diario de a bordo” de tu máquina: ahí se guarda todo lo que ocurre, desde inicios del sistema hasta errores de aplicaciones. En este artículo te voy a explicar de forma sencilla y práctica cómo ver los logs del sistema en Linux, usando comandos básicos y herramientas modernas como journalctl. Vamos a desglosar todo lo que necesitas saber para dominar los logs Linux y solucionar problemas como un experto.
¿Qué son los logs del sistema y por qué son importantes?
Los logs del sistema (o archivos de registro) son archivos de texto donde Linux guarda eventos, errores, advertencias y mensajes informativos de todos los componentes: kernel, servicios, aplicaciones, inicios de sesión, etc. Son tu mejor aliado para diagnosticar fallos, monitorizar la seguridad o entender el comportamiento del servidor.
Por ejemplo, si un sitio web deja de cargar, los logs te dirán si fue un error de Apache, de la base de datos o de red. Si un usuario no puede conectarse por SSH, ahí estará el intento fallido registrado. Por eso saber cómo ver logs Linux es una habilidad fundamental para cualquier sysadmin.
Ubicación tradicional de los logs en Linux
Históricamente, la mayoría de distribuciones Linux guardan los logs en el directorio /var/log. Allí encontrarás archivos como:
- syslog o messages: registro general del sistema.
- auth.log o secure: eventos de autenticación (inicios de sesión, sudo).
- kern.log: mensajes del kernel.
- dmesg: mensajes del anillo del kernel (hardware, drivers).
- apache2/access.log y error.log: logs del servidor web Apache.
- mysql/error.log: errores de MySQL/MariaDB.
Para ver el contenido de estos archivos puedes usar comandos como cat, less, tail o grep. Pero ojo: muchos logs requieren permisos de superusuario (root o sudo).
Comandos básicos para leer logs
Aquí tienes los comandos esenciales para ver logs sistema directamente desde la terminal:
tail: Muestra las últimas líneas de un archivo. Ideal para ver eventos recientes.- Ejemplo:
sudo tail -f /var/log/syslog(el flag-fsigue mostrando nuevas líneas en tiempo real).
- Ejemplo:
less: Permite navegar por el archivo con flechas, buscar texto con/y salir conq.- Ejemplo:
sudo less /var/log/auth.log.
- Ejemplo:
cat: Muestra todo el contenido de golpe (no recomendado para archivos grandes).grep: Busca palabras clave dentro de los logs.- Ejemplo:
sudo grep "error" /var/log/syslog.
- Ejemplo:
[TIP] Siempre usa sudo al leer logs del sistema, ya que suelen tener permisos restringidos.
El sistema de logs moderno: systemd y journalctl
Desde hace años, la mayoría de distribuciones Linux (Ubuntu, Debian, CentOS, Fedora) usan systemd como sistema de inicio. Con él llegó journald, un servicio que centraliza todos los logs en un formato binario optimizado. Para acceder a ellos se usa el comando journalctl.
Ventajas de journalctl frente a logs tradicionales
- Estructura estructurada: cada entrada tiene campos como
_PID,_COMM,_UID, etc. - Filtrado potente: por unidad de systemd, prioridad, tiempo, usuario, etc.
- Persistencia: si configuras
/var/log/journal, los logs sobreviven a reinicios. - Integración: combina logs del kernel, servicios, aplicaciones y más.
Cómo usar journalctl: ejemplos prácticos
Aquí tienes los comandos más útiles para ver logs sistema con journalctl:
Ver todos los logs del sistema
sudo journalctl
Esto muestra una larga lista (como less). Puedes navegar con flechas y salir con q.
Ver logs en tiempo real (como tail -f)
sudo journalctl -f
Perfecto para monitorizar eventos mientras ocurren.
Ver logs desde el último arranque
sudo journalctl -b
Si usas -b -1 ves el arranque anterior, -b -2 el anterior, etc.
Filtrar por servicio o unidad de systemd
sudo journalctl -u apache2.service
Reemplaza apache2.service por ssh.service, nginx.service, mysql.service, etc.
Filtrar por prioridad (nivel de gravedad)
Los niveles van de 0 (emergencia) a 7 (debug). Ejemplo para ver solo errores y peor:
sudo journalctl -p err
También puedes usar -p 3 (error), -p 4 (warning), etc.
Filtrar por fecha y hora
sudo journalctl --since "2025-03-01 00:00:00" --until "2025-03-02 12:00:00"
También acepta expresiones como "yesterday", "1 hour ago", "today".
Ver logs de un PID específico
sudo journalctl _PID=1234
Ver logs de un usuario específico
sudo journalctl _UID=1000
[WARNING] Si no ves logs de arranques anteriores, probablemente journald no está configurado como persistente. Para solucionarlo, crea el directorio /var/log/journal y reinicia el servicio:
sudo mkdir -p /var/log/journal && sudo systemctl restart systemd-journald.
Combinando logs tradicionales y journalctl
Aunque journalctl es muy potente, algunos logs específicos de aplicaciones (como Apache o MySQL) se siguen escribiendo en /var/log. La buena noticia es que puedes usar ambos mundos:
- Para logs de servicios systemd:
journalctl -u servicio.service. - Para logs de aplicaciones que no usan systemd: revisa
/var/log/nombreapp/.
Por ejemplo, si usas Syspanel (el panel de control HestiaCP, accesible por el puerto 2106), sus logs suelen estar en /var/log/hestia/ o /usr/local/hestia/log/. Pero también puedes ver eventos del panel con journalctl -u hestia.service (si está configurado como servicio systemd).
Consejos avanzados para gestionar logs
Rotación de logs (logrotate)
Los logs pueden crecer mucho y llenar el disco. Linux usa logrotate para comprimir, rotar y eliminar logs antiguos automáticamente. Puedes configurarlo editando archivos en /etc/logrotate.d/.
Buscar errores comunes con grep
Si tienes un archivo de log enorme, combina grep con tail o less:
sudo grep -i "error" /var/log/syslog | tail -50
Ver logs de arranque con dmesg
Para ver mensajes del kernel (hardware, drivers):
dmesg | less
O en tiempo real:
dmesg -w
Logs de seguridad: auth.log
Para ver intentos de inicio de sesión (exitosos y fallidos):
sudo journalctl -u ssh.service
O tradicional:
sudo tail -f /var/log/auth.log
Preguntas frecuentes (FAQ) sobre logs en Linux
¿Cómo veo los logs de Apache con journalctl?
sudo journalctl -u apache2.service
Si usas Nginx: sudo journalctl -u nginx.service.
¿Qué hago si journalctl no muestra logs de arranques anteriores?
Asegúrate de que el directorio /var/log/journal exista. Si no, créalo y reinicia journald.
¿Cómo busco un error específico en todos los logs?
Usa journalctl con grep:
sudo journalctl | grep "Out of memory"
¿Puedo ver logs de un contenedor Docker?
Sí, pero no con journalctl directamente. Usa docker logs nombre_contenedor.
¿Cómo veo los logs de Syspanel (HestiaCP)?
Syspanel guarda sus logs en /var/log/hestia/ (por ejemplo, /var/log/hestia/auth.log). También puedes usar:
sudo journalctl -u hestia.service
Recuerda que el panel se accede por el puerto 2106 (ejemplo: https://tudominio.com:2106).
¿Los logs consumen mucho espacio?
Depende. Por defecto, journald limita el tamaño al 10% del sistema de archivos. Puedes ajustarlo en /etc/systemd/journald.conf con SystemMaxUse=500M.
¿Cómo borro logs antiguos?
Para journalctl:
sudo journalctl --vacuum-time=7d # Borra logs de más de 7 días
sudo journalctl --vacuum-size=200M # Limita el tamaño a 200 MB
Para logs tradicionales, usa logrotate o bórralos manualmente (con cuidado).
Resumen: tu checklist para ver logs en Linux
- Identifica qué servicio o evento quieres revisar.
- Usa journalctl como primera opción:
sudo journalctl -u servicio.service. - Si el log no está en journald, busca en
/var/log/. - Usa filtros:
-p err,--since,-b,grep. - Para monitorización en tiempo real:
sudo journalctl -fosudo tail -f /var/log/archivo.log. - Gestiona el espacio: configura
logrotateyjournalctl --vacuum.
Con estos comandos y trucos, ya puedes ver logs sistema como un profesional. Recuerda que los logs son tu mejor herramienta de diagnóstico: ante un fallo, ¡siempre mira los logs primero!
[INFO] Si necesitas ayuda más específica para tu distribución, comenta abajo y te orientaré. ¡Feliz administración!
