journalctl
Consulta los registros (logs) que escriben systemd y los servicios.
Lee el journal, que es el registro donde systemd guarda lo que dice el sistema al arrancar y lo que escribe cada servicio (SSH, nginx, Docker). Lo usas cuando un servicio no levanta y necesitas ver el error que soltó, o cuando buscas un mensaje concreto de hace un rato.
journalctl [opciones] [UNIDAD]Las opciones --vacuum-size, --vacuum-files y --vacuum-time borran archivos de registro antiguos. Si te equivocas de fecha o de tamaño, pierdes justo el historial que necesitabas para investigar. Revisa primero cuánto ocupa con journalctl --disk-usage y qué arranques hay guardados con journalctl --list-boots.
Despiece
6 ejemplosVer los últimos mensajes
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | journalctl | Comando | El comando que lee el registro del sistema. |
| 2 | -n | Opción | Limita la cantidad de líneas que se muestran. |
| 3 | 50 | Valor | Las últimas 50 líneas del registro. |
| 4 | --no-pager | Opción | Imprime la salida de corrido, sin abrir el paginador less. |
Ves las últimas 50 líneas del registro, de la más antigua a la más reciente. Con --no-pager la salida no se abre en less, que es lo que pasa cuando la mandas a otro comando o la revisas dentro de un script.
Ver los mensajes de un servicio
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | journalctl | Comando | El comando que lee el registro del sistema. |
| 2 | -u | Opción | Filtra por unidad, que es como systemd llama a cada servicio. |
| 3 | ssh.service | Valor | El servicio que quieres revisar. El nombre del archivo .service que usa systemd. |
| 4 | -n | Opción | Limita la cantidad de líneas que se muestran. |
| 5 | 50 | Valor | Las últimas 50 líneas del registro. |
Solo los mensajes del servicio indicado, con su hora y el proceso que los escribió. Es el primer comando para diagnosticar algo que no arranca. Si aparece -- No entries --, el servicio nunca llegó a escribir nada: quizá ni siquiera arrancó.
Ver los mensajes en vivo
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | journalctl | Comando | El comando que lee el registro del sistema. |
| 2 | -f | Opción | Sigue el registro: se queda esperando y muestra cada línea nueva conforme aparece. |
La terminal se queda esperando. Lo dejas corriendo, repites la acción que falla (conectarte por SSH, reiniciar el servicio, abrir la página) y ahí aparece el error. Sales con Ctrl+C.
Buscar los errores del arranque actual
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | journalctl | Comando | El comando que lee el registro del sistema. |
| 2 | -p | Opción | Filtra por nivel de gravedad del mensaje. |
| 3 | err | Valor | Nivel error. journalctl incluye ese nivel y todos los más graves: emerg, alert, crit y err. |
| 4 | -b | Opción | Solo lo que se escribió en el arranque actual de la máquina. |
| 5 | --no-pager | Opción | Imprime la salida de corrido, sin abrir el paginador less. |
Solo los mensajes que el sistema marcó como error o algo peor desde que arrancó la máquina. Es el atajo para entender por qué algo quedó mal después de reiniciar, sin leer miles de líneas.
Ver los mensajes del kernel
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | journalctl | Comando | El comando que lee el registro del sistema. |
| 2 | -k | Opción | Filtra por el registro del kernel, donde está lo que el sistema dice del hardware. |
| 3 | -n | Opción | Limita la cantidad de líneas que se muestran. |
| 4 | 20 | Valor | Solo las últimas 20 líneas, porque el kernel escribe harto. |
Lo que dijo el kernel: discos y particiones detectados, tarjeta de red levantada, errores de memoria, avisos de hardware. Es lo mismo que muestra el comando dmesg, pero con fecha y hora legibles.
Ver lo que pasó en la última hora
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | journalctl | Comando | El comando que lee el registro del sistema. |
| 2 | --since | Opción | Filtra por fecha: solo lo escrito a partir del momento que sigue. |
| 3 | "1 hour ago" | Valor | El momento a partir del cual quieres ver, entre comillas para que la terminal no lo parta. journalctl entiende palabras como "1 hour ago", today o 09:00, y también fechas como 2026-10-01. |
| 4 | --no-pager | Opción | Imprime la salida de corrido, sin abrir el paginador less. |
Todo lo que se registró en la última hora. Sirve cuando algo pasó hace rato y quieres ver el contexto sin buscar línea por línea.
Opciones
Las que sí vas a usar| Opción | Qué hace |
|---|---|
| -f--follow | Se queda esperando y muestra lo que se escribe en vivo, como tail -f. Sales con Ctrl+C. |
| -u UNIDAD--unit | Filtra por un servicio. Cada servicio en systemd es una unidad, por eso el nombre suele terminar en .service. |
| -n N--lines | Muestra solo las últimas N entradas. Si le pones un + adelante (-n +20) muestra las 20 más antiguas. |
| -p NIVEL--priority | Filtra por gravedad: emerg, alert, crit, err, warning, notice, info o debug. Muestra ese nivel y todos los más graves. |
| -b--boot | Filtra por arranque. A secas es el arranque actual; con -b -1 ves el anterior. |
| --since | Muestra solo lo que se escribió a partir de cierta fecha o hora, en palabras o en formato de fecha: "1 hour ago", today, 09:00 o 2026-10-01. |
| -k--dmesg | Muestra solo el registro del kernel: detección de discos, tarjetas de red, memoria y errores del hardware. |
| --no-pager | No abre la salida en el paginador less, aunque la respuesta sea larga. Útil dentro de scripts. |
Fallas comunes
| Falla | Remedio |
|---|---|
| Quedarse pegado en la salida larga sin saber cómo salir. | Cuando el registro no cabe en la pantalla, journalctl lo abre en el paginador less. Sales con la tecla q; con espacio bajas una página, con b subes y con las flechas te mueves línea por línea. Para que no se abra, agrega --no-pager. |
| Ver el aviso de que no estás viendo mensajes de otros usuarios. | Aparece el Hint: You are currently not seeing messages from other users and the system cuando tu usuario no está en los grupos adm o systemd-journal, que son los que pueden leer todo el registro. Usa sudo journalctl, o agrega tu usuario a systemd-journal (solo da permiso de leer el registro) con sudo usermod -aG systemd-journal $USER y vuelve a iniciar sesión. |
| Buscar los registros en /var/log con cat y no encontrar nada legible. | Con systemd el registro está en el journal, un formato binario dentro de /var/log/journal, y no se abre con cat: se lee con journalctl. Los archivos de texto como /var/log/syslog solo existen si hay un servicio como rsyslog: Ubuntu 24.04 lo trae instalado, pero Debian 12 y 13 ya no. |
| Correr journalctl -f esperando que se guarde en un archivo. | -f solo muestra en pantalla, no guarda nada. Para guardar la salida redirígela: journalctl -f > /tmp/mi-servicio.log. Igual hay que detenerlo con Ctrl+C para que cierre el archivo. |
Preguntas frecuentes
- ¿Qué es journalctl?
- Es el comando que lee el journal de systemd, el registro centralizado donde el sistema anota lo que pasa al arrancar y lo que dice cada servicio. En Debian 12 y 13 sustituye a los archivos de texto como /var/log/syslog; Ubuntu 24.04 todavía guarda también ese archivo, pero journalctl lee todo desde un solo lugar.
- ¿Cómo veo los logs de un servicio con journalctl?
- Con journalctl -u nombre-del-servicio, por ejemplo journalctl -u ssh.service. Para verlos mientras pasa, agrega -f; para quedarte con las últimas líneas, -n 50. Si no sabes el nombre exacto, búscalo con systemctl list-units --type=service.
- ¿Cómo veo los logs del arranque anterior?
- Con journalctl -b -1, porque el -1 cuenta un arranque hacia atrás. Para ver qué arranques hay guardados usa journalctl --list-boots: lista el número, el identificador y la fecha de cada uno.
- ¿Qué significa el aviso de You are currently not seeing messages from other users?
- Que solo estás viendo el registro de tu usuario y no el del sistema. Pasa cuando tu usuario no pertenece a los grupos adm o systemd-journal. Usa sudo journalctl para verlo todo, o agrega tu usuario al grupo systemd-journal (o adm) y vuelve a iniciar sesión para que el cambio aplique.
- ¿Qué son las prioridades (priorities) de journalctl?
- Es el nivel de gravedad de cada mensaje: 0 emerg, 1 alert, 2 crit, 3 err, 4 warning, 5 notice, 6 info y 7 debug. Con -p eliges un piso: journalctl -p err muestra err y todo lo más grave; journalctl -p warning además incluye los avisos. También puedes usar el número: -p 3 es igual a -p err.