GNU/Linux >> Tutoriales Linux >  >> Linux

Journalctl:Cómo leer y editar registros de Systemd

Introducción

Systemd registra todos los mensajes de Linux del kernel y los procesos del sistema. El comando journalctl permite ver y editar los registros de systemd, lo que lo convierte en una poderosa herramienta para la depuración de servicios y procesos.

Esta guía muestra cómo leer, controlar y mantener registros de systemd usando journalctl a través de ejemplos.

Requisitos previos

  • Acceso a la línea de comandos/ventana de terminal.
  • Un editor de texto (como nano) para editar el archivo de configuración.
  • Un usuario con privilegios sudo (vea cómo agregar un usuario a sudoers).

¿Qué es Systemd?

Systemd es un administrador de sistemas y servicios de Linux. Si bien los usuarios no invocan systemd directamente, el administrador contiene muchas herramientas y demonios para ejecutar individualmente para varios procesos del sistema.

Una de las funcionalidades más potentes de systemd son las funciones de registro. Systemd proporciona una solución centralizada para registrar todos los procesos del kernel y del usuario a través de registros conocidos como diarios. .

El diario daemon recopila todos los mensajes que genera el sistema y luego crea diarios, independientemente del programa o proceso. El demonio recopila datos de todos los recursos del sistema disponibles y los almacena en formato binario.

Nota: El formato binario permite manipular la salida para satisfacer sus necesidades, brindando más flexibilidad que los archivos de registro tradicionales de Linux.

Sintaxis de journalctl

El journalctl El comando consulta y manipula los datos del diario recopilados por journald demonio. La herramienta es vital para los administradores de sistemas y complementa otras herramientas de registro de Linux y soluciones de software de servidor Syslog.

La sintaxis del comando es:

journalctl <options> <matches>

Sin ningún parámetro, el journalctl El comando genera el contenido completo del diario a partir de la entrada más antigua. El <match> es uno o más argumentos separados por espacios para filtrar los campos de salida. El formato es "FIELD=VALUE" .

Opciones de diarioctl

La siguiente tabla resume journalctl comunes opciones:

Opción Descripción
-a
--all
Mostrar todos los campos completos, incluidos los caracteres no imprimibles.
-f
--follow
Muestra las entradas más recientes e imprime nuevas continuamente.
--no-full Trunca la salida.
-e
--pager-end
Salta al final del localizador.
-n <number>
--lines=<number>
Muestra las entradas más recientes limitadas a <number> de eventos. Sin un argumento, el valor predeterminado es diez (10).
-o <format>
--output=<format>
Muestra las entradas del diario en el <format> solicitado .
--utc Muestra la hora en formato de hora universal coordinada (UTC).
-x
--catalog
Agrega texto de explicación al mensaje de registro donde esté disponible.
-q
--quiet
Suprime mensajes informativos en la salida.
-b [<ID> or <+-offset>]
--boot[=<ID> or <+-offset>]
Muestra registros de un arranque específico. Omitir el argumento muestra los registros de arranque actuales.
-k
--dmesg
Muestra solo los mensajes del kernel.
--list-boots Muestra una tabla de números de bota y sus ID.
-g <regex>
--grep=<regex>
Filtrar la salida de acuerdo con la sintaxis de grep regex.
-S <date> , -U <date>
--since=<date> , --until=<date>
Muestra entradas más recientes o más antiguas que la fecha especificada.
-u <unit|pattern>
--unit=<unit|pattern>
Mostrar registros para la unidad systemd especificada o cualquier unidad que coincida con el <pattern> .
--disk-usage Calcula y muestra el tamaño total del diario en el disco.
--vaccuum-size=<size> Limita el tamaño del archivo de diario archivado a .
--vaccuum-time=<time> Limita las revistas archivadas a más recientes que
--no-pager Desactiva el buscapersonas y se muestra como salida estándar.

Compruebe el journalctl página de manual usando el comando man para obtener una lista completa de opciones.

Cómo leer systemd

La siguiente sección describe cómo leer los registros de systemd y usar las diversas opciones de visualización para el journalctl dominio. La salida es diferente para cada máquina ya que los registros para cada sistema son únicos.

Mostrar todas las entradas del diario

Para mostrar todas las entradas del diario, utilice el journalctl comando sin opciones:

journalctl

La primera línea de la salida muestra el intervalo de tiempo de los datos de registro. Las columnas contienen los siguientes datos en orden de izquierda a derecha:

  • Fecha y hora.
  • Anfitrión.
  • Fuente de registro.
  • Registrar mensaje.

Los datos del diario contienen muchas entradas. Usa las teclas de flecha (similar al comando less) para navegar.

Salga del diario presionando q .

Mostrar entradas más recientes

El journalctl El comando muestra las entradas más antiguas de forma predeterminada. Para saltar al final del buscapersonas y mostrar las entradas más recientes, use el -e opción:

journalctl -e

El resultado muestra las 1000 entradas finales para ahorrar espacio.

Para controlar cuántas líneas se muestran en la salida, use el -n opción seguida del número de líneas. Por ejemplo, para mostrar las cinco entradas de diario más recientes, utilice:

journalctl -n 5

El -e la opción es innecesaria y está implícita en -n opción. Omitir el número muestra las diez entradas más recientes de forma predeterminada.

Limitar los registros al arranque específico

Para limitar los registros al inicio actual, use el -b etiqueta sin ningún parámetro:

journalctl -b

Sin ningún parámetro, el comando muestra los registros de arranque actuales.

Salta a un inicio específico agregando un parámetro de desplazamiento. Por ejemplo, muestre los registros de arranque anteriores con:

journalctl -b -1

Alternativamente, muestre el registro de inicio más antiguo disponible con:

journalctl -b +1

Una forma alternativa de ver un arranque específico es usar una ID de arranque. Obtenga los ID de arranque usando --list-boots con:

journalctl --list-boots

La primera columna muestra el número de desplazamiento negativo, mientras que la segunda columna obtiene el ID de arranque . Copie el ID y agréguelo como parámetro al comando, por ejemplo:

journalctl -b cc07702b00884ec59312ece62604cac8

La salida limita la visualización del registro a la instancia de ID proporcionada.

Mostrar registros dentro de una ventana de tiempo específica

Filtre el diario especificando un límite de tiempo. Las dos opciones para limitar desde o hasta un tiempo específico son:

journalctl -S <datetime>
journalctl -U <datetime>

Utilice las opciones individualmente o combínelas para crear una ventana de tiempo.

El comando espera uno de los siguientes formatos de fecha y hora:

  • Fecha y hora específicas, por ejemplo, 2022-04-30 09:20:00 . Omitir el parámetro de tiempo por defecto es 00:00:00 .
  • Cadenas, como "yesterday" , "today" , "2 hours ago" o "now" .

A continuación se muestra un ejemplo journalctl comando con una ventana de tiempo específica:

journalctl -S 2022-04-02 -U 2022-04-22

El comando crea una ventana de tiempo desde el 2 de abril de 2022 hasta el 22 de abril de 2022. El resultado muestra los diarios que se encuentran en ese período de tiempo.

Alternativamente, use un patrón de cadena como:

journalctl -S "50 minutes ago"

La salida muestra registros desde la hora indicada hasta la hora actual.

Mostrar registros por unidad específica del sistema

Filtre los registros por la unidad systemd específica usando el -u etiqueta y proporcionando el nombre de la unidad. Por ejemplo, para filtrar solo los registros de la unidad de servicio de Jenkins, ejecute:

journalctl -u jenkins

El resultado muestra las entradas de diario relacionadas con la unidad systemd específica (en este caso, Jenkins).

Nota: Para mostrar todas las unidades systemd actualmente activas, use:

systemctl list-units

Mostrar mensajes del núcleo

Para mostrar solo los mensajes de registro del diario del kernel, use el -k opción:

journalctl -k

La salida muestra los mensajes del kernel solo desde el inicio actual, aplicando el -b etiqueta. Para encontrar registros del kernel de una sesión de arranque diferente, agregue el -b etiqueta y busca una bota específica.

Registros de seguimiento

Usa el -f o --follow etiqueta para imprimir los registros más recientes continuamente:

journalctl -f

La salida imprime los registros a medida que se generan en tiempo real. La opción permite monitorear los registros con journalctl como se agregan.

Para salir del visor, presiona CTRL +C .

Filtrar mensajes de registro según la prioridad

Filtre los mensajes de registro por prioridad usando el siguiente comando:

journalctl -p <number or text priority>

Existen las siguientes prioridades:

  • Emergencia - 0 o emerg
  • Alerta - 1 o alert
  • Crítico - 2 o crit
  • Error:3 o err
  • Advertencia:4 o warning
  • Aviso - 5 o notice
  • Informar - 6 o info
  • Depuración - 7 o debug

Un número más bajo indica los mensajes de mayor prioridad. Especificar una prioridad de un solo nivel también muestra todos los registros de menor prioridad (más críticos).

Por ejemplo, para mostrar alertas, utilice:

journalctl -p 1

O alternativamente:

journalctl -p alert

La salida muestra solo mensajes en el nivel de alerta y los más importantes (si los hay).

Filtrar mensajes de registro en función de un usuario específico

Para ver los registros de un usuario, busque el ID de usuario (UID) con:

id <user>

Para obtener el ID del usuario actual, omita el <user> . El resultado muestra el valor de UID para el usuario dado. Use el campo de diario UID para filtrar los mensajes de registro según el usuario específico:

journalctl _UID=<UID>

La salida filtra el registro diario en función del ID de usuario especificado.

Nota: Para obtener una lista completa de campos, consulte el systemd.journal-fields página de manual:

man systemd.journal-fields

Cómo editar la salida de registro de systemd

Un aspecto esencial de trabajar con registros como administrador del sistema es formatear las salidas del registro. Systemd ofrece muchos métodos para manipular el resultado visual y obtener los datos en el formato deseado.

A continuación se muestran algunas opciones y ejemplos de edición de salida estándar.

Salida a salida estándar

El journalctl El comando muestra la salida mediante un buscapersonas. Deshabilite el localizador con:

journalctl --no-pager

La salida resultante está en salida estándar (stdout). Utilice esta opción cuando analice los datos de registro con herramientas de edición de texto o scripts de Bash.

Truncar o expandir la salida

El journalctl pager muestra eventos de diario ampliados en la salida. Presionando la derecha y teclas de flecha izquierda ayuda a navegar por el texto que no se ajusta al tamaño de la pantalla.

Para limitar, trunca el journalctl salida, use el --no-full opción:

journalctl --no-full

La salida limita las líneas al tamaño de la pantalla, agregando puntos suspensivos (... ) para indicar una visualización truncada.

Formatos de salida

El journalctl El comando ofrece varias opciones para los formatos de salida. La sintaxis para el formato de salida es:

journalctl -o <output format>

Algunos de los formatos disponibles incluyen:

  • cat - Muestra solo el campo de mensaje.
  • export - Salidas en formato binario, adecuado para copias de seguridad.
  • short - Genera una salida similar a los archivos Syslog clásicos.
  • short-precise - Muestra el tiempo con microsegundos.
  • json - Da formato a las entradas del diario en entradas JSON de una sola línea.
  • json-pretty - Formatos en estructuras JSON en varias líneas.

Por ejemplo, para mostrar usando el json-pretty formato, uso:

journalctl -o json-pretty

Diferentes formatos permiten usar los datos de registro en bases de datos, archivos de secuencias de comandos o analizarlos a través del software de monitoreo.

Mantenimiento de registros

El almacenamiento de datos de registro tiene un costo y ocupa espacio. A continuación, se incluyen algunos consejos y trucos para descubrir el uso del disco, mantener los archivos de datos de registro y liberar el espacio utilizado por los archivos de registro antiguos.

Mostrar uso del disco

Para verificar el uso del disco de diario, ejecute el siguiente comando:

journalctl --disk-usage

El resultado muestra el espacio ocupado total del disco por diarios archivados y activos.

Eliminar registros antiguos

Elimine los archivos de registro antiguos estableciendo el límite de tamaño deseado. El comando requiere sudo para eliminar los archivos /var/log/journal .

Por ejemplo, establezca el tamaño en 1M con:

sudo journalctl --vacuum-size=1M

Ingrese la contraseña de sudo y presione Enter . La salida imprime los nombres y tamaños de los archivos, y la última línea muestra la cantidad de memoria liberada.

Como alternativa, elimine los registros archivados en función del tiempo. Cualquier archivo anterior al tiempo establecido se elimina y libera memoria. Por ejemplo, para eliminar archivos que tengan más de dos meses, ejecute:

sudo journalctl --vacuum-time=2months

Los sufijos de tiempo son s , m , h , days , months , weeks o years .

Limitar el diario

El archivo de configuración de diario permite establecer límites y controlar cuántos datos de diario ocupan en el disco. Para editar el archivo, ejecute:

sudo nano /etc/systemd/journald.conf

El archivo contiene campos de configuración de ejemplo. Los siguientes parámetros se ocupan del tamaño del diario y los límites de memoria:

  • SystemMaxUse - Almacenamiento persistente máximo utilizado por la revista.
  • SystemKeepFree - Cantidad de espacio libre que deja un diario al agregar entradas al almacenamiento persistente.
  • SystemMaxFileSize - Establece el tamaño máximo de los archivos de diario en el almacenamiento persistente.
  • RuntimeMaxUse - Espacio máximo en disco de almacenamiento volátil.
  • RuntimeKeepFree - Cantidad de espacio libre para otros usos al escribir en almacenamiento volátil.
  • RuntimeMaxFileSize - Establece el tamaño máximo para archivos de diario en almacenamiento volátil.

Los controles de tamaño de archivo apuntan a los archivos archivados para alcanzar los límites. Descomente las líneas y establezca los límites para obtener un mejor control sobre los recursos de almacenamiento y consumo de la máquina.

Conclusión

Esta guía mostró cómo ver, controlar y administrar los registros de diario de systemd a través de ejemplos. El journalctl El comando es una herramienta valiosa que ayuda a solucionar problemas de los servicios de Linux y descubrir errores del sistema.


Linux
  1. Variables de entorno de Linux:cómo leer y configurar en un VPS de Linux

  2. Cómo leer y corregir los mensajes de denegación de SELinux

  3. Cómo:Administrar registros del sistema con Journalctl

  4. Cómo depurar el proceso de arranque de systemd en CentOS/RHEL 7 y 8

  5. ¿Cómo copiar y editar archivos en el shell de Android?

Cómo aprendí a dejar de preocuparme y amar systemd

Cómo leer la salida y los usos del comando superior de Linux

Cómo configurar y leer el correo web

Cómo borrar los registros de diario de Systemd

Cómo usar journalctl para ver y manipular registros de Systemd

Lea y analice los registros de su sistema Linux con Journalctl