日付または日付範囲でシステムログファイルをフィルタリングする


12

私が達成したいこと:

日付でシステムログファイルをフィルタリングしたい、つまり、次のようにしたい:

$ cat /var/log/syslog | grep -i "error\|warn\|kernel" 

最後の3日間、次のような行を出力します。

(...)
Apr  3 06:17:38 computer_name kernel: [517239.805470] IPv6: ADDRCONF(NETDEV_CHANGE): wlp3s0: link becomes ready
(...)
Apr  4 19:34:21 computer_name kernel: [517242.523165] e1000e: enp0s25 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
(...)
Apr  5 09:00:52 computer_name kernel: [517242.523217] IPv6: ADDRCONF(NETDEV_CHANGE): enp0s25: link becomes ready

grep(選択、またはフィルター)の方法:

  • 日付で?
  • 日付+時間で?

私が試したもの:

$ cat /var/log/syslog | grep -i "Apr  5" | grep -i "error\|warn\|kernel" 

これは、予想通りに動作するsyslogには、ファイルではなく、kern.log:だけ返し例えばファイル、Binary file (standard input) matches。そして、私はときtail、この特定のファイル、私はよりも、同じ開始日の形式を見ることができますsyslogファイル。

質問:

kern.logファイルのような他のログで同じことを達成する方法は?

さらに、以下をフィルタリングできますか?

  • 日付範囲で?
  • 日付+時間の範囲で?

ヒント:可能であれば、「覚えやすいコマンド」を使用してください。

回答:


14

systemdを使用すると、次のような簡単にきめ細かいフィルタリングを可能にするjournalctlを取得できました。

sudo journalctl --since "2 days ago"   
sudo journalctl --since "2019-03-10" --until "2019-03-11 03:00"
sudo journalctl -b # last boot 
sudo journalctl -k # kernel messages
sudo journalctl -p er # by priority (emerg|alert|crit|err|warning|info|debug)
sudo journalctl -u sshd # by unit 
sudo journalctl _UID=1000 # by user id

例は組み合わせることができます!


5
OK、これはとてもクールです!
ジョージウドセン

2
多くのsudo場合、必要ではありません(特に、ユーザーがadm通常「メイン」ユーザーであるグループのメンバーである場合)。
PerlDuck

4

一般的に、これkern.logはテキストファイルです。ただし、特にシステムが以前にクラッシュして、システムがファイルを適切に閉じることができなかった場合は特に、バイナリデータが含まれていることがあります。その後^@^@^@^@^@^@^@^@^@、などのテキストを含む行に気付くことがあります。

grep入力がbinaryであることに気付いた場合、通常はそれ以上の処理を停止し、... binary file ...代わりに出力します。ただし、この動作を変更するスイッチがあります。マンページから:

[...]
File and Directory Selection
   -a, --text
          Process a binary file as if it were text; 
          this is equivalent to the --binary-files=text option.
[...]

以下を試すことができます:

$ grep -a -i "Apr  5" /var/log/kern.log  | grep -i "error\|warn\|kernel"

(しかし、私は実際journalctlに別の答えで与えられた解決策を好むでしょう。)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.