Journalctl, algunos comandos interesantes
Alrededor del 2012, mucnas distribuciones Linux cambiron su tradicional «System V» init por el nuevo systemd. systemd es utilizado para arrancar el sistema operativo y administrar procesos. systemd incluye un componente auxiliar denominado «journalctl», cuyo principal propósito es administrar los eventos de log del sistema, por lo que para los sysadmines y devops es una herramient súper útil.
Ya hemos estado hablando de algunos comandos del nuevo systemd en SystemD vs SysVinit: algunos comandos.
Por defecto, el comando utilizado sin argumentos muestra todos los contenidos del journal, iniciando con la entrada más antigua que fue guardada.
Todos los usuarios por defecto pueden ver sus propios journals, no obstante, el acceso a los archivos de logs principales y a los logs de otros usuarios solo puede ser visto por usuarios privilegiados, como el root, o los usuarios pertenecientes a los grupos wheel o systemd-journal.
Además, como los logs del sistema pueden ser muy cargados de información adicional y explicativa, journalctl permite pasarle parámetros para limitar la salida a entradas específicas.
Por defecto, las entradas más antiguas se muestran al principio. La salida es mostrada una pantalla a la vez, no obstante, podemos deslizarnos con las teclas del cursor para ver el resto de la salida, o presionando la tecla de espacio para desplazarnos pantallas enteras.
Las líneas están truncadas, no obstante podemos movernos con las teclas del cursor a izquierda y derecha para ver el contenido completo.
Otras variantes de journalctl
Veremos ahora algunas variantes de journalctl interesantes a la hora de administrar un sistema.
journalctl -r
Nos permite mostrar la salida del comando en orden invertido, los primeros debajo, y los últimos encima.
journalctl -f
Esta es una interesante opción que emula el clásico «tail -f /var/log/syslog». Este comando nos permite ver el journal del ordenador en tiempo real, y las nuevas líneas las iremos viendo entrar a las salida del comando.
La opción «-f» viene de «follow» o seguir, por su significado del inglés.
journalctl -n12
Este comando nos permite limitar, en este caso particular, la salida a solamente las últimas 12 líneas. La cantidad de líneas dependen de la necesidad del usuario.
Limitando la salida por tiempo
Una opción muy interesante es la de filtrar la salida por tiempo, y mostrar únicamente los logs de cierta fecha, hora, o en un rango de tiempo.
Los tiempos se pueden especificar siguiendo el formato: YYYY-MM-DD HH:MM:SS (Año, mes, día, hora, minuto, segundo).
Por otro lado, esta estampa de tiempo puede ir acompañada de un «–since» para indicar «desde», y/o un «–until» para indicar «hasta».
Veamos los logs de algunas horas de un día específico:
Como se puede ver, estos logs son del 13 de enero del 2016, y van desde las 10 de la mañana, hasta las 12. Es la salida correspondiente al siguiente comando:
sudo journalctl –since «2016-01-13 10:00:00» –until «2016-01-13 12:00:00»
Por otro lado, puede omitirse tanto el «–since» como el «–until» y eliminar uno de los límites en la salida.
Además, este comando permite especificar fechas y tiempos en un formato más amigable y «humano» 🙂
Algunos ejemplos:
sudo journalctl --since "1 hour ago" sudo journalctl --since "30 minutes ago" sudo journalctl --since "30 minutes ago" sudo journalctl --since "1 day ago" sudo journalctl --since "1 wheek ago" sudo journalctl --since "1 week ago" sudo journalctl --since "1 month ago" sudo journalctl --since "1 year ago" sudo journalctl --since "1 year ago"
Por supuesto, «–since» puede ser sustituido por «–until», o pueden usarse ambos:
sudo journalctl --since "2 hours ago" --until "30 minutes ago"
Eventos de un usuario específico
Sabiendo el UID de un usuario en Linux, podemos mostrar los eventos de dicho usuario sin inconvenientes:
diego@cryptos:~$ id andy uid=1001(andy) gid=1001(andy) groups=1001(andy) diego@cryptos:~$ sudo journalctl UID=1001 -- No entries --
Además, se puede combinar con las opciones anteriores, para filtrar por tiempo, cantidad de líneas, etc.
Eventos de un servicio
Para quienes administran servidores, por ahí les interesará saber cómo podemos ver los logs generados, por ejemplo, por el servicio de SSH.
En este caso, un comando tan simple como:
sudo journalctl -u sshd.service
Nos dará una salida como esta:
Podemos listar los eventos de varios servicios simultáneamente:
sudo journalctl -u sshd.service -u vsftpd.service
Para listar los servicios que están corriendo en nuestro ordenador podemos correr el siguiente comando:
sudo systemctl -t service -a
Mostrando log del inicio del ordenador
Es algo súmamente útil para saber si cierto y determinado servicio o componente se ha ejecutado correctamente o no al iniciarse el equipo, o detectar cualquier anomalía.
sudo journalctl -b
Mostrando los mensajes del kernel
Otra forma de ver información para debuggear información del sistema es ver los mensajes del núcleo del sistema:
sudo journalctl -k
En otros artículos iremos amplicando la información para poder administrar correctamente un sistema systemd.
¡Espero que les haya gustado y les haya resultado útil!
¡Hasta la próxima!
3 comentarios
Jorge Schiariti · 18 agosto, 2016 a las 14:52
Qué bueno que está tu portal Diego !!!
Diego Córdoba · 19 agosto, 2016 a las 01:35
Muchas gracias Jorge!! 🙂
Diego Cordoba - @d1cor · 12 junio, 2017 a las 19:36
Fede! Quizás me expresé mal… la fecha siempre va acompañando a uno de estos parámetros, -since o -until, nunca sola… ahora, ĺo que quise decir, es que podés omitir el -since o -until para eliminar uno de los límites, con lo que, el comando podría quedar:
sudo journalctl -since -until #con los dos limites
sudo journalctl -until # solo con limite inicial
sudo journalctl -since # solo con límite final
Espero te aclare!
Los comentarios están cerrados.