Những gì tôi muốn đạt được:
Tôi muốn lọc một tệp nhật ký hệ thống theo ngày, tức là khi tôi làm:
$ cat /var/log/syslog | grep -i "error\|warn\|kernel"
nó in những dòng như thế này trong ba ngày qua, giả sử:
(...)
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
Cách grep (chọn hoặc lọc):
- theo ngày?
- theo ngày + giờ?
Những gì tôi đã cố gắng:
$ cat /var/log/syslog | grep -i "Apr 5" | grep -i "error\|warn\|kernel"
Nó hoạt động như mong đợi trên syslog
tệp, nhưng không phải trên kern.log
tệp, ví dụ, chỉ trả về : Binary file (standard input) matches
. Và khi tôi tail
tập tin cụ thể này, tôi có thể thấy định dạng ngày bắt đầu giống như trong syslog
tập tin.
Câu hỏi:
Làm thế nào để đạt được điều tương tự trên các bản ghi khác như kern.log
tập tin?
Ngoài ra, có thể lọc:
- theo phạm vi ngày?
- theo ngày + phạm vi giờ?
Gợi ý: nếu có thể, với "các lệnh dễ nhớ".