GNU/Linux >> Linux Esercitazione >  >> Linux

Come filtrare le voci dei file di registro in base all'intervallo di date

Se incontri difficoltà durante la lettura sistematica dei file di registro in Linux. Allora sei nel posto giusto. Semplicemente facendo gatto leggere un file di registro è un modo abbastanza semplice per ispezionare un file di registro. Ma quando desideri filtrare i dati in modo organizzato in base al tempo, utilizziamo awk , grep e sed comandi.

Il awk è un popolare strumento da riga di comando utilizzato per manipolare i dati nei file e generare un report basato su un determinato modello nel sistema Linux. Mentre grep è un semplice strumento per i modelli che ricerca i modelli utilizzando un'espressione regolare.

Oggi filtreremo /var/log/syslog file basato sull'intervallo di date utilizzando entrambi awk e grep strumenti da riga di comando.

Filtra i dati usando il comando Awk

Innanzitutto, filtriamo il file Syslog in base all'intervallo di tempo utilizzando awk comando come mostrato.

$ sudo awk -v start=07:00 -v stop=19:00 'start <= $2 && $2 < stop' /var/log/syslog
Risultato campione
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'

Sostituisci start=HH:MM con ora e minuti di inizio, stop=HH:MM con ora e minuti finali.

Se vuoi controllare il log più facilmente e in modo semplice, puoi seguire il grep utilità di comando.

Filtra i dati usando il comando Grep

Mostrerò alcuni esempi usando grep come se volessi controllare il registro per oggi, quindi passerò il comando seguente.

$ sudo grep -E " Dec 11" /var/log/syslog
Risultato campione
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)

Ora ti spiegheremo come funziona questo comando “grep ”. Un grep viene utilizzato per cercare modelli regolari nel file fornito.

I parametri -E è chiamato extended-regex che viene utilizzato per impostare i modelli e, infine, è necessario fornire un file di registro o una directory di registro.

Per ottenere dati in un intervallo di esempi di date dal 01 dicembre al 10 dicembre , usa il comando seguente.

$ sudo grep -E "Dec 1|Dec 10" syslog
Risultato campione
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.

Filtra i dati usando il comando Sed

Ora ti mostreremo come filtrare i dati usando il sed riga di comando. Per ottenere dati in un intervallo di date con determinati esempi di orari dall'11 dicembre 18:45:06 all'11 dicembre 19:00:01 , usa il comando seguente.

$ sudo sed -n '/Dec 11 18:45:06 /,/Dec 11 19:00:01/p' /var/log/syslog
Risultato campione
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)

Il -n parametro con sed non stamperà l'output di ogni riga. Ora il /pattern1/ ,/pattern2/ sarà l'espressione Nell'ultimo -p i parametri suggeriscono che sed verifichi l'espressione successiva secondo un dato modello. Dopo tutto questo, devi fornire il file di registro o il percorso del file di registro.

In caso di domande e problemi relativi al filtro Data. Sentiti libero di porre la tua domanda nella sezione commenti.


Linux
  1. Linux – Come trovare la data di creazione del file?

  2. Come utilizzare Logrotate per gestire i file di registro

  3. Come aggiungere una stringa di data a ogni riga di un file di registro scritto continuamente

  4. Come ottenere la data/ora di creazione del file in Bash/Debian?

  5. Come fare in modo che ssh acceda come l'utente giusto?

Come ottenere la data e l'ora correnti in Python

Come evitare voci duplicate nella cronologia di Bash in Linux

Come modificare il file di registro di Sudo predefinito in Linux

Come trovare file basati su timestamp in Linux

Come riparare gli errori del file system nei sistemi basati su Debian

sintassi del file di configurazione logrotate:sono possibili più voci jolly?