「◯◯時からXX時までの間のログを抽出」というような、時間で指定ができる『timegrep』コマンド

ログを閲覧する際、「◯月◯日の◯時~☓時までの間」のログを見たいという事があるだろう。
そんな時便利なのが、今回紹介するtimegrepコマンドだ。これは、まさにその時間を指定してログを抽出することができるコマンドだ。

今回は、CentOS 7にこのコマンドをインストールして、実際に利用してみることにする。

1.インストール

まずはインストールから。以下のコマンドを実行し、実行ファイルのダウンロード、配置を行う。

git clone https://github.com/linux-wizard/timegrep
cp ./timegrep/timegrep /usr/bin/

2.コマンドの実行

さて、それでは実際にコマンドを実行してみよう。
コマンドは、以下のように実行するとよい。

timegrep -d yyyy-mm-dd --start-time=XX:XX --end-time=YY:YY ログのPATH

実際に実行したのがこちら。

[root@dctest01 /]# timegrep -d 2015-03-23 --start-time=10:00 --end-time=11:00 /var/log/messages
Mar 23 10:01:01 dctest01 systemd: Starting Session 91 of user root.
Mar 23 10:01:01 dctest01 systemd: Started Session 91 of user root.
Mar 23 10:06:42 dctest01 smbd[15977]: [2015/03/23 10:06:42.603809,  0] ../source3/printing/print_cups.c:151(cups_connect)
Mar 23 10:06:42 dctest01 smbd[15977]: Unable to connect to CUPS server localhost:631 - 通信端点が接続されていません
Mar 23 10:06:42 dctest01 smbd[2376]: [2015/03/23 10:06:42.618926,  0] ../source3/printing/print_cups.c:529(cups_async_callback)
Mar 23 10:06:42 dctest01 smbd[2376]: failed to retrieve printer list: NT_STATUS_UNSUCCESSFUL
Mar 23 10:19:43 dctest01 smbd[15998]: [2015/03/23 10:19:43.360417,  0] ../source3/printing/print_cups.c:151(cups_connect)
Mar 23 10:19:43 dctest01 smbd[15998]: Unable to connect to CUPS server localhost:631 - 通信端点が接続されていません
Mar 23 10:19:43 dctest01 smbd[2376]: [2015/03/23 10:19:43.363890,  0] ../source3/printing/print_cups.c:529(cups_async_callback)
Mar 23 10:19:43 dctest01 smbd[2376]: failed to retrieve printer list: NT_STATUS_UNSUCCESSFUL
Mar 23 10:32:44 dctest01 smbd[16021]: [2015/03/23 10:32:44.083602,  0] ../source3/printing/print_cups.c:151(cups_connect)
Mar 23 10:32:44 dctest01 smbd[16021]: Unable to connect to CUPS server localhost:631 - 通信端点が接続されていません
Mar 23 10:32:44 dctest01 smbd[2376]: [2015/03/23 10:32:44.087023,  0] ../source3/printing/print_cups.c:529(cups_async_callback)
Mar 23 10:32:44 dctest01 smbd[2376]: failed to retrieve printer list: NT_STATUS_UNSUCCESSFUL
Mar 23 10:45:44 dctest01 smbd[16041]: [2015/03/23 10:45:44.772358,  0] ../source3/printing/print_cups.c:151(cups_connect)
Mar 23 10:45:44 dctest01 smbd[16041]: Unable to connect to CUPS server localhost:631 - 通信端点が接続されていません
Mar 23 10:45:44 dctest01 smbd[2376]: [2015/03/23 10:45:44.775951,  0] ../source3/printing/print_cups.c:529(cups_async_callback)
Mar 23 10:45:44 dctest01 smbd[2376]: failed to retrieve printer list: NT_STATUS_UNSUCCESSFUL
Mar 23 10:58:45 dctest01 smbd[16063]: [2015/03/23 10:58:45.544300,  0] ../source3/printing/print_cups.c:151(cups_connect)
Mar 23 10:58:45 dctest01 smbd[16063]: Unable to connect to CUPS server localhost:631 - 通信端点が接続されていません
Mar 23 10:58:45 dctest01 smbd[2376]: [2015/03/23 10:58:45.558747,  0] ../source3/printing/print_cups.c:529(cups_async_callback)
Mar 23 10:58:45 dctest01 smbd[2376]: failed to retrieve printer list: NT_STATUS_UNSUCCESSFUL

確かに、指定した時間で抽出することができた。
一応、このコマンドが無くてもawkやsed、grepで抽出することはできるのだが、こういった専用のコマンドがある方がわかりやすいなぁ。