GNU/Linux >> Belajar Linux >  >> Linux

Cara Memfilter Entri File Log Berdasarkan Rentang Tanggal

Jika Anda menghadapi kesulitan saat membaca file log secara sistematis di Linux. Maka Anda berada di tempat yang tepat. Cukup melakukan kucing membaca file log adalah cara yang agak mendasar untuk memeriksa file log. Namun bila Anda ingin memfilter data secara terorganisir berdasarkan waktu, maka kami menggunakan awk , grep , dan sed perintah.

awk adalah alat baris perintah populer yang digunakan untuk memanipulasi data dalam file dan menghasilkan laporan berdasarkan pola yang diberikan dalam sistem Linux. Sementara grep adalah alat pola sederhana yang mencari pola menggunakan ekspresi reguler.

Hari ini, kami akan memfilter /var/log/syslog file berdasarkan rentang tanggal menggunakan keduanya awk dan grep alat baris perintah.

Filter Data Menggunakan Perintah Awk

Pertama, kita filter file Syslog berdasarkan rentang waktu menggunakan awk perintah seperti yang ditunjukkan.

$ sudo awk -v start=07:00 -v stop=19:00 'mulai <=$2 &&$2  
Contoh Keluaran
11 Des 19:39:19 LINUX dbus-daemon[2742]:[session uid=1000 pid=2742] Mengaktifkan melalui systemd:service name='org.freedesktop.Tracker1' unit='tracker-store.service' diminta oleh ':1.3' (uid=1000 pid=2740 comm="/usr/libexec/tracker-miner-fs " label="unconfined") 11 Des 19:39:19 LINUX systemd[2727]:Memulai database metadata Tracker manajer toko dan pencarian...11 Des 19:39:19 LINUX systemd[1]:session-23.scope:Berhasil.11 Des 19:39:19 LINUX dbus-daemon[2742]:[session uid=1000 pid=2742] Berhasil mengaktifkan layanan 'org.freedesktop.Tracker1'

Ganti start=HH:MM dengan jam dan menit mulai, stop=HH:MM dengan jam dan menit terakhir.

Jika Anda ingin memeriksa log dengan lebih mudah dan sederhana, Anda dapat mengikuti grep utilitas perintah.

Filter Data Menggunakan Perintah Grep

Saya akan menunjukkan beberapa contoh menggunakan grep seperti saya ingin memeriksa log untuk Hari ini, maka saya akan memberikan perintah di bawah ini.

$ sudo grep -E " 11 Des" /var/log/syslog
Contoh Keluaran
11 Des 12:07:35 LINUX /usr/libexec/gdm-x-session[1231]:(==) File log:"/var/lib/gdm3/.local/share/xorg/Xorg.0 .log", Waktu:Jum 11 Des 12:07:35 202011 Des 12:08:39 LINUX /usr/libexec/gdm-x-session[2812]:(==) File log:"/home/shen/. local/share/xorg/Xorg.1.log", Waktu:Jum Des 11 12:08:39 2020Des 11 12:09:04 LINUX gnome-shell[3019]:GNOME Shell dimulai pada Jum Des 11 2020 12:08:55 GMT+0530 (IST)11 Des 14:24:41 LINUX /usr/libexec/gdm-x-session[1208]:(==) File log:"/var/lib/gdm3/.local/share/xorg /Xorg.0.log", Waktu:Jum 11 Des 14:24:41 202011 Des 14:25:13 LINUX /usr/libexec/gdm-x-session[2783]:(==) File log:"/home /shen/.local/share/xorg/Xorg.1.log", Waktu:Jum Des 11 14:25:13 2020Des 11 14:25:40 LINUX gnome-shell[3049]:GNOME Shell dimulai pada Jum 11 Des 2020 14:25:31 GMT+0530 (IST)

Sekarang kami akan menjelaskan kepada Anda, bagaimana perintah ini bekerja “grep ”. Sebuah grep digunakan untuk mencari pola reguler dalam file yang disediakan.

Parameter -E disebut extended-regex yang digunakan untuk mengatur pola dan terakhir, Anda perlu menyediakan file log atau direktori log.

Untuk mendapatkan data antara rentang contoh tanggal dari 01 Des hingga 10 Des , gunakan perintah di bawah ini.

$ sudo grep -E syslog "1 Des|10 Des"
Contoh Keluaran
11 Des 19:48:04 LINUX systemd[1]:Memulai Layanan Hostname...11 Des 19:48:04 LINUX dbus-daemon[856]:[system] Berhasil mengaktifkan layanan 'org.freedesktop.hostname1' 11 Des 19:48:04 LINUX systemd[1]:Memulai Layanan Hostname. 11 Des 19:48:34 LINUX systemd[1]:systemd-hostnamed.service:Berhasil.11 Des 19:50:01 LINUX CRON[39178] :(shen) CMD (~/duckdns/duck.sh>/dev/null 2>&1) 11 Des 19:51:58 LINUX dbus-daemon[856]:[system] Mengaktifkan melalui systemd:service name='org. freedesktop.hostname1' unit='dbus-org.freedesktop.hostname1.service' diminta oleh ':1.320' (uid=1000 pid=38994 comm="/usr/bin/gnome-screenshot --gapplication-service " label=" unconfined") 11 Des 19:51:58 LINUX systemd[1]:Memulai Layanan Hostname...11 Des 19:51:58 LINUX dbus-daemon[856]:[system] Berhasil mengaktifkan layanan 'org.freedesktop.hostname1' 11 Des 19:51:58 LINUX systemd[1]:Memulai Layanan Hostname.

Filter Data Menggunakan Perintah Sed

Sekarang kami akan menunjukkan cara memfilter data menggunakan sed garis komando. Untuk mendapatkan data antara rentang tanggal dengan contoh waktu tertentu dari 11 Des 18:45:06 hingga 11 Des 19:00:01 , gunakan perintah di bawah ini.

$ sudo sed -n '/11 Des 18:45:06 /,/Dec 11 19:00:01/p' /var/log/syslog
Contoh Keluaran
11 Des 18:45:06 LINUX dbus-daemon[856]:[system] Mengaktifkan melalui systemd:service name='org.freedesktop.hostname1' unit='dbus-org.freedesktop.hostname1.service' diminta oleh ':1.301' (uid=1000 pid=35830 comm="/usr/bin/gnome-screenshot --gapplication-service " label="unconfined") 11 Des 18:45:06 LINUX systemd[1]:Memulai Layanan Hostname ... 11 Desember 18:45:06 LINUX dbus-daemon[856]:[sistem] Berhasil mengaktifkan layanan 'org.freedesktop.hostname1'11 Desember 18:45:06 LINUX systemd[1]:Memulai Layanan Nama Host. 11 Desember 18:45:36 LINUX systemd[1]:systemd-hostnamed.service:Succeeded.Dec 11 18:47:22 LINUX dbus-daemon[856]:[system] Mengaktifkan melalui systemd:service name='org.freedesktop.hostname1 ' unit='dbus-org.freedesktop.hostname1.service' diminta oleh ':1.303' (uid=1000 pid=35830 comm="/usr/bin/gnome-screenshot --gapplication-service " label="unconfined") 11 Des 18:47:22 LINUX systemd[1]:Memulai Layanan Hostname...11 Des 18:47:22 LINUX dbus-daemon[856]:[system] Berhasil mengaktifkan layanan e 'org.freedesktop.hostname1'11 Des 18:47:22 LINUX systemd[1]:Memulai Layanan Hostname.11 Des 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 Des 18:55:01 LINUX CRON[36206]:(shen) CMD (~/ duckdns/duck.sh>/dev/null 2>&1)11 Des 19:00:01 LINUX CRON[36473]:(shen) CMD (~/duckdns/duck.sh>/dev/null 2>&1) 

-n parameter dengan sed tidak akan mencetak output dari setiap baris. Sekarang /pattern1/ ,/pattern2/ akan menjadi ekspresi. Di -p terakhir parameter menyarankan sed memverifikasi ekspresi berikutnya sesuai dengan pola yang diberikan. Setelah semua ini, Anda perlu menyediakan file log atau lokasi file log.

Jika Anda memiliki pertanyaan dan masalah yang terkait dengan filter Tanggal. Jangan ragu untuk menanyakan pertanyaan Anda di bagian komentar.


Linux
  1. Linux + Bagaimana Cara Mengabaikan (filter) File Dengan Spasi?

  2. Cara Mengosongkan File Log di Linux

  3. Cara menggunakan Logrotate untuk mengelola file log

  1. Cara menambahkan string tanggal ke setiap baris file log yang terus ditulis

  2. Bagaimana cara mendapatkan tanggal/waktu pembuatan file di Bash/Debian?

  3. Bagaimana cara membuat ssh masuk sebagai pengguna yang tepat?

  1. Cara membagi satu file menjadi beberapa file berdasarkan baris

  2. Linux – Bagaimana Menemukan Tanggal Pembuatan File?

  3. Bagaimana cara mencetak keluaran perintah Linux ke file?