GNU/Linux >> Tutoriels Linux >  >> Linux

Comment filtrer les entrées du fichier journal en fonction de la plage de dates

Si vous rencontrez des difficultés lors de la lecture systématique des fichiers journaux sous Linux. Alors vous êtes au bon endroit. Faire simplement chat lire un fichier journal est un moyen basique d'inspecter un fichier journal. Mais lorsque vous souhaitez filtrer les données de manière organisée en fonction du temps, nous utilisons awk , grep , et sed commandes.

Le maladroit est un outil de ligne de commande populaire utilisé pour manipuler des données dans des fichiers et générer un rapport basé sur un modèle donné dans le système Linux. Tandis que grep est un outil de modèle simple qui recherche des modèles à l'aide d'une expression régulière.

Aujourd'hui, nous allons filtrer /var/log/syslog fichier basé sur la plage de dates en utilisant à la fois awk et grep outils de ligne de commande.

Filtrer les données à l'aide de la commande Awk

Tout d'abord, nous filtrons le fichier Syslog en fonction de la plage horaire à l'aide de awk commande comme indiqué.

$ sudo awk -v start=07:00 -v stop=19:00 'start <=$2 &&$2  
Exemple de sortie
11 décembre 19:39:19 LINUX dbus-daemon[2742] :[session uid=1000 pid=2742] Activation via systemd :service name='org.freedesktop.Tracker1' unit='tracker-store.service' demandé par ':1.3' (uid=1000 pid=2740 comm="/usr/libexec/tracker-miner-fs " label="unconfined")11 décembre 19:39:19 LINUX systemd[2727] :Démarrage de la base de données de métadonnées Tracker magasin et gestionnaire de recherche... 11 décembre 19:39:19 LINUX systemd[1] :session-23.scope :Succeeded.Dec 11 19:39:19 LINUX dbus-daemon[2742] :[session uid=1000 pid=2742] Le service 'org.freedesktop.Tracker1' a été activé avec succès

Remplacez start=HH:MM avec heure et minute de départ, stop=HH:MM avec heure et minute finales.

Si vous souhaitez vérifier le journal plus facilement et de manière simple, vous pouvez suivre le grep utilitaire de commande.

Filtrer les données à l'aide de la commande Grep

Je vais montrer quelques exemples en utilisant grep comme je veux vérifier le journal d'aujourd'hui, alors je vais passer la commande ci-dessous.

$ sudo grep -E " Dec 11" /var/log/syslog
Exemple de sortie
11 décembre 12:07:35 LINUX /usr/libexec/gdm-x-session[1231] :(==) Fichier journal :"/var/lib/gdm3/.local/share/xorg/Xorg.0 .log", Heure :11 décembre 12:07:35 11 décembre 2020 12:08:39 LINUX /usr/libexec/gdm-x-session[2812] :(==) Fichier journal :"/home/shen/. local/share/xorg/Xorg.1.log", Heure :ven 11 décembre 12:08:39 2020 11 décembre 12:09:04 LINUX gnome-shell[3019] :GNOME Shell a démarré le ven 11 décembre 2020 12:08 :55 GMT+0530 (IST)11 décembre 14:24:41 LINUX /usr/libexec/gdm-x-session[1208] :(==) Fichier journal :"/var/lib/gdm3/.local/share/xorg /Xorg.0.log", Heure :11 décembre 14:24:41 11 décembre 2020 14:25:13 LINUX /usr/libexec/gdm-x-session[2783] :(==) Fichier journal :"/home /shen/.local/share/xorg/Xorg.1.log", Heure :ven 11 décembre 14:25:13 2020 11 décembre 14:25:40 LINUX gnome-shell[3049] :GNOME Shell a démarré le ven 11 décembre 2020 14:25:31 GMT+0530 (IST)

Nous allons maintenant vous expliquer comment fonctionne cette commande "grep ”. Un grep est utilisé pour rechercher des modèles réguliers dans le fichier fourni.

Les paramètres -E est appelé extended-regex qui est utilisé pour définir des modèles et enfin, vous devez fournir un fichier journal ou un répertoire de journaux.

Pour obtenir des données entre une plage d'exemples de dates allant du 01 décembre au 10 décembre , utilisez la commande ci-dessous.

$ sudo grep -E "Dec 1|Dec 10" syslog
Exemple de sortie
11 décembre 19:48:04 LINUX systemd[1] :Démarrage du service de nom d'hôte... 11 décembre 19:48:04 LINUX dbus-daemon[856] :[système] Le service 'org.freedesktop.hostname1' a été activé avec succès 11 décembre 19:48:04 LINUX systemd[1] :Service de nom d'hôte démarré. 11 décembre 19:48:34 LINUX systemd[1] :systemd-hostnamed.service :réussi. 11 décembre 19:50:01 LINUX CRON[39178] :(shen) CMD (~/duckdns/duck.sh>/dev/null 2>&1)11 décembre 19:51:58 LINUX dbus-daemon[856] :[système] Activation via systemd :service name='org. freedesktop.hostname1' unit='dbus-org.freedesktop.hostname1.service' demandé par ':1.320' (uid=1000 pid=38994 comm="/usr/bin/gnome-screenshot --gapplication-service " label=" non confiné")11 décembre 19:51:58 LINUX systemd[1] :Démarrage du service de nom d'hôte... 11 décembre 19:51:58 LINUX dbus-daemon[856] :[système] Service activé 'org.freedesktop.hostname1' 11 décembre 19:51:58 LINUX systemd[1] :Service de nom d'hôte démarré.

Filtrer les données à l'aide de la commande Sed

Nous allons maintenant vous montrer comment filtrer les données à l'aide de sed ligne de commande. Pour obtenir des données entre une plage de dates avec certains exemples de temps du 11 décembre 18:45:06 au 11 décembre 19:00:01 , utilisez la commande ci-dessous.

$ sudo sed -n '/Dec 11 18:45:06 /,/Dec 11 19:00:01/p' /var/log/syslog
Exemple de sortie
11 décembre 18:45:06 LINUX dbus-daemon[856] :[système] Activation via systemd :service name='org.freedesktop.hostname1' unit='dbus-org.freedesktop.hostname1.service' demandé par ':1.301' (uid=1000 pid=35830 comm="/usr/bin/gnome-screenshot --gapplication-service " label="unconfined")11 décembre 18:45:06 LINUX systemd[1] :Démarrage du service de nom d'hôte ... Dec 11 18:45:06 LINUX dbus-daemon[856] :[système] Service activé avec succès 'org.freedesktop.hostname1'Dec 11 18:45:06 LINUX systemd[1] :Service de nom d'hôte démarré.Dec 11 18:45:36 LINUX systemd[1] :systemd-hostnamed.service :Succeeded.Dec 11 18:47:22 LINUX dbus-daemon[856] :[système] Activation via systemd :service name='org.freedesktop.hostname1 ' unit='dbus-org.freedesktop.hostname1.service' demandé par ':1.303' (uid=1000 pid=35830 comm="/usr/bin/gnome-screenshot --gapplication-service " label="unconfined") 11 décembre 18:47:22 LINUX systemd[1] :Démarrage du service de nom d'hôte... 11 décembre 18:47:22 LINUX dbus-daemon[856] :[système] Service activé avec succès e 'org.freedesktop.hostname1'Dec 11 18:47:22 LINUX systemd[1] :Service de nom d'hôte démarré.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)11 décembre 18:55:01 LINUX CRON[36206] :(shen) CMD (~/ duckdns/duck.sh>/dev/null 2>&1)11 décembre 19:00:01 LINUX CRON[36473] :(shen) CMD (~/duckdns/duck.sh>/dev/null 2>&1) 

Le -n Le paramètre avec sed n'imprimera pas la sortie de chaque ligne. Maintenant le /pattern1/ ,/pattern2/ sera l'expression. Dans le dernier -p les paramètres suggèrent que sed vérifie l'expression suivante selon un modèle donné. Après tout cela, vous devez fournir le fichier journal ou l'emplacement du fichier journal.

Si vous avez des questions et des problèmes liés au filtre Date. N'hésitez pas à poser votre question dans la section des commentaires.


Linux
  1. Linux – Comment trouver la date de création du fichier ?

  2. Linux + Comment ignorer (filtrer) un fichier avec de l'espace ?

  3. Comment filtrer le journal Dmesg pour ne voir que les erreurs ?

  4. Comment vider un fichier journal sous Linux

  5. Comment utiliser Logrotate pour gérer les fichiers journaux

Comment obtenir la date et l'heure actuelles en Python

Comment éviter les entrées en double dans l'historique de Bash sous Linux

Comment changer le fichier journal Sudo par défaut sous Linux

Comment trouver des fichiers basés sur l'horodatage sous Linux

Comment réparer les erreurs du système de fichiers dans les systèmes basés sur Debian

Comment ajouter un horodatage au journal des scripts bash ?