GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo filtrar las entradas del archivo de registro según el rango de fechas

Si tiene dificultades para leer sistemáticamente los archivos de registro en Linux. Entonces usted está en el lugar correcto. Simplemente haciendo gato leer un archivo de registro es una forma básica de inspeccionar un archivo de registro. Pero cuando desea filtrar datos de manera organizada según el tiempo, usamos awk , grep y sed comandos.

El awk es una popular herramienta de línea de comandos que se utiliza para manipular datos en archivos y generar un informe basado en un patrón dado en el sistema Linux. Mientras grep es una herramienta de patrón simple que busca patrones usando una expresión regular.

Hoy filtraremos /var/log/syslog archivo basado en el rango de fechas usando ambos awk y grep herramientas de línea de comandos.

Filtrar datos usando el comando Awk

Primero, filtramos el archivo Syslog según el rango de tiempo usando el awk comando como se muestra.

$ sudo awk -v start=07:00 -v stop=19:00 'start <= $2 && $2 < stop' /var/log/syslog
Salida de muestra
Dec 11 19:39:19 LINUX dbus-daemon[2742]: [session uid=1000 pid=2742] Activating via systemd: service name='org.freedesktop.Tracker1' unit='tracker-store.service' requested by ':1.3' (uid=1000 pid=2740 comm="/usr/libexec/tracker-miner-fs " label="unconfined")
Dec 11 19:39:19 LINUX systemd[2727]: Starting Tracker metadata database store and lookup manager...
Dec 11 19:39:19 LINUX systemd[1]: session-23.scope: Succeeded.
Dec 11 19:39:19 LINUX dbus-daemon[2742]: [session uid=1000 pid=2742] Successfully activated service 'org.freedesktop.Tracker1'

Reemplazar start=HH:MM con hora y minuto de inicio, stop=HH:MM con hora y minutos finales.

Si desea consultar el registro de forma más fácil y sencilla, puede seguir el grep utilidad de comando.

Filtrar datos usando el comando Grep

Mostraré algunos ejemplos usando grep como si quisiera verificar el registro de Hoy, luego pasaré el siguiente comando.

$ sudo grep -E " Dec 11" /var/log/syslog
Salida de muestra
Dec 11 12:07:35 LINUX /usr/libexec/gdm-x-session[1231]: (==) Log file: "/var/lib/gdm3/.local/share/xorg/Xorg.0.log", Time: Fri Dec 11 12:07:35 2020
Dec 11 12:08:39 LINUX /usr/libexec/gdm-x-session[2812]: (==) Log file: "/home/shen/.local/share/xorg/Xorg.1.log", Time: Fri Dec 11 12:08:39 2020
Dec 11 12:09:04 LINUX gnome-shell[3019]: GNOME Shell started at Fri Dec 11 2020 12:08:55 GMT+0530 (IST)
Dec 11 14:24:41 LINUX /usr/libexec/gdm-x-session[1208]: (==) Log file: "/var/lib/gdm3/.local/share/xorg/Xorg.0.log", Time: Fri Dec 11 14:24:41 2020
Dec 11 14:25:13 LINUX /usr/libexec/gdm-x-session[2783]: (==) Log file: "/home/shen/.local/share/xorg/Xorg.1.log", Time: Fri Dec 11 14:25:13 2020
Dec 11 14:25:40 LINUX gnome-shell[3049]: GNOME Shell started at Fri Dec 11 2020 14:25:31 GMT+0530 (IST)

Ahora te explicaremos cómo funciona este comando “grep ”. Un grep se utiliza para buscar patrones regulares en el archivo proporcionado.

Los parámetros -E se llama expresión regular extendida que se usa para establecer patrones y, por último, debe proporcionar un archivo de registro o un directorio de registro.

Para obtener datos entre un rango de ejemplos de fechas del 01 de diciembre al 10 de diciembre , use el siguiente comando.

$ sudo grep -E "Dec 1|Dec 10" syslog
Salida de muestra
Dec 11 19:48:04 LINUX systemd[1]: Starting Hostname Service...
Dec 11 19:48:04 LINUX dbus-daemon[856]: [system] Successfully activated service 'org.freedesktop.hostname1'
Dec 11 19:48:04 LINUX systemd[1]: Started Hostname Service.
Dec 11 19:48:34 LINUX systemd[1]: systemd-hostnamed.service: Succeeded.
Dec 11 19:50:01 LINUX CRON[39178]: (shen) CMD (~/duckdns/duck.sh >/dev/null 2>&1)
Dec 11 19:51:58 LINUX dbus-daemon[856]: [system] Activating via systemd: service name='org.freedesktop.hostname1' unit='dbus-org.freedesktop.hostname1.service' requested by ':1.320' (uid=1000 pid=38994 comm="/usr/bin/gnome-screenshot --gapplication-service " label="unconfined")
Dec 11 19:51:58 LINUX systemd[1]: Starting Hostname Service...
Dec 11 19:51:58 LINUX dbus-daemon[856]: [system] Successfully activated service 'org.freedesktop.hostname1'
Dec 11 19:51:58 LINUX systemd[1]: Started Hostname Service.

Filtrar datos usando el comando Sed

Ahora le mostraremos cómo filtrar datos usando el sed línea de comando. Para obtener datos entre un rango de fechas con ciertos ejemplos de tiempo desde 11 de diciembre a las 18:45:06 hasta el 11 de diciembre a las 19:00:01 , use el siguiente comando.

$ sudo sed -n '/Dec 11 18:45:06 /,/Dec 11 19:00:01/p' /var/log/syslog
Salida de muestra
Dec 11 18:45:06 LINUX dbus-daemon[856]: [system] Activating via systemd: service name='org.freedesktop.hostname1' unit='dbus-org.freedesktop.hostname1.service' requested by ':1.301' (uid=1000 pid=35830 comm="/usr/bin/gnome-screenshot --gapplication-service " label="unconfined")
Dec 11 18:45:06 LINUX systemd[1]: Starting Hostname Service...
Dec 11 18:45:06 LINUX dbus-daemon[856]: [system] Successfully activated service 'org.freedesktop.hostname1'
Dec 11 18:45:06 LINUX systemd[1]: Started Hostname Service.
Dec 11 18:45:36 LINUX systemd[1]: systemd-hostnamed.service: Succeeded.
Dec 11 18:47:22 LINUX dbus-daemon[856]: [system] Activating via systemd: service name='org.freedesktop.hostname1' unit='dbus-org.freedesktop.hostname1.service' requested by ':1.303' (uid=1000 pid=35830 comm="/usr/bin/gnome-screenshot --gapplication-service " label="unconfined")
Dec 11 18:47:22 LINUX systemd[1]: Starting Hostname Service...
Dec 11 18:47:22 LINUX dbus-daemon[856]: [system] Successfully activated service 'org.freedesktop.hostname1'
Dec 11 18:47:22 LINUX systemd[1]: Started Hostname Service.
Dec 11 18:47:52 LINUX systemd[1]: systemd-hostnamed.service: Succeeded.
Dec 11 18:50:01 LINUX CRON[36057]: (shen) CMD (~/duckdns/duck.sh >/dev/null 2>&1)
Dec 11 18:55:01 LINUX CRON[36206]: (shen) CMD (~/duckdns/duck.sh >/dev/null 2>&1)
Dec 11 19:00:01 LINUX CRON[36473]: (shen) CMD (~/duckdns/duck.sh >/dev/null 2>&1)

El -n El parámetro con sed no imprimirá la salida de cada línea. Ahora el /pattern1/ ,/pattern2/ será la expresión. En el último -p Los parámetros sugieren sed verificar la siguiente expresión de acuerdo con un patrón dado. Después de todo esto, debe proporcionar el archivo de registro o la ubicación del archivo de registro.

Si tiene alguna consulta y problema relacionado con el filtro de fecha. No dude en hacer su consulta en la sección de comentarios.


Linux
  1. Linux:¿cómo encontrar la fecha de creación del archivo?

  2. Linux + ¿Cómo ignorar (filtrar) el archivo con espacio?

  3. ¿Cómo filtrar el registro de Dmesg para ver solo los errores?

  4. Cómo vaciar un archivo de registro en Linux

  5. Cómo usar Logrotate para administrar archivos de registro

Cómo obtener la fecha y hora actuales en Python

Cómo evitar entradas duplicadas en el historial de Bash en Linux

Cómo cambiar el archivo de registro de Sudo predeterminado en Linux

Cómo encontrar archivos basados ​​en la marca de tiempo en Linux

Cómo reparar errores del sistema de archivos en sistemas basados ​​en Debian

Sintaxis del archivo de configuración logrotate:¿son posibles múltiples entradas comodín?