大家好,在本文中,我们将了解如何根据日期范围过滤日志条目。 一般可以通过cat命令查看日志文件,但是系统日志文件中的条目较多,通过cat命令很难查看。 我们可以使用 journalctl、grep、sed 和 awk 等命令过滤日期范围内的日志文件。 我们将在下面详细讨论所有这些:
根据日期范围过滤日志条目
现在让我们看看使用多种不同方法根据日期范围过滤日志条目。
1.journalctl
Journalctl 命令用于查询系统日志。 使用此命令和一些参数将按日期范围向我们显示日志文件条目。 按打开终端 Ctrl+Alt+T 并执行以下命令:
journalctl
如果我们使用不带参数的 journalctl,它将显示从开始的所有条目。 要检查过去两天的条目,请执行以下命令:
journalctl --since "2 days ago"
--since
和 --until
选项用于分别指定开始和结束日期。 如果要检查特定日期范围的条目,请执行以下命令:
journalctl --since "yyyy-mm-dd hh:mm" --until "yyyy-mm-dd hh:mm" journalctl --since "2022-02-18" --until "2022-02-21 04:00"
2.awk 命令
awk 是一个非常强大的命令,用于数据操作、文本检索和处理。 要按日期过滤日志条目,请执行以下命令:
sudo awk -vDate=`date -d’now-2 hours’ +[%d/%b/%Y:%H:%M:%S` ‘ { if ($4 > Date) print Date FS $4}’ /home/sid/.cache/protonvpn/logs/protonvpn.log
-v
用于给变量赋值,例如如下图,Date和Date2是两个变量,表示两个日期范围。 要过滤指定日期范围的日志条目,请执行以下命令:
sudo awk -vDate=`date -d 'YYYY-MM-DD' +[%d/%b/%Y:%H:%M:%S` -vDate2='date -d 'YYYY-MM-DD' +[%d/%b/%Y:%H:%M:%S' ' { if ($4 > Date && $4 < Date2) print $0}' <file_name.log>
sudo awk -vDate=`date -d '2022-02-17' +[%d/%b/%Y:%H:%M:%S` -vDate2='date -d'2022-02-26' +[%d/%b/%Y:%H:%M:%S' ' { if ($4 > Date && $4 < Date2) print $0}' /home/sid/.cache/protonvpn/logs/protonvpn.log
3. grep 命令
grep 是一种流行且最常用的命令,用于根据模式打印线条。 -E
用于将模式解释为正则表达式。 执行以下命令按日期过滤日志条目:
sudo grep -E "pattern" <file_name.log>
sudo grep -E "2022-02-19" protonvpn.log
要过滤指定日期范围的日志条目,请执行以下命令:
sudo grep -E "pattern1 | pattern2" <file_name.log>
sudo grep -E "2022-02-19 | 2022-02-21" protonvpn.log
4.sed命令
sed 是另一个类似于 grep 命令但效率更高的命令。 它用于过滤和转换文本。 让我们看看如何使用 sed 命令过滤日志条目。 执行以下命令以获取指定日期之间的条目:
sed -n '/pattern1/,/pattern2/p' <file_name.log>
sudo sed -n '/2022-02-19/,/2022-02-21/p' protonvpn.log
要了解有关这些命令的更多信息,您可以参考官方手册页。要打开手册页,请打开终端并输入 人 后跟命令名称,例如,
man sed
结论
因此,我们讨论了如何根据特定日期/时间或日期之间过滤日志条目。 我们讨论了许多命令,所有命令都易于使用,即使对于初学者也是如此。 我希望这个对你有用。 感谢您的阅读!