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.