我有一个每天轮换的日志文件(比如说主日志文件)我需要每小时捕获一次日志,然后存储每小时的日志文件
例如;
当我在 02/06/2017 03:41:35 执行脚本命令时,我需要 02:41:35 到 03:41:35 之间的日志
主日志文件
[02/06/2017][00:12:41][58162][3690952448][000000000000000000000000
[02/06/2017][00:12:41][58162][3690952448][000000000000000000000000
----------
[02/06/2017][03:41:35][57732][3674167040][000000000000000000000000
[02/06/2017][03:41:35][57732][3674167040][000000000000000000000000
每小时日志文件
[02/06/2017][02:41:35][58162][3690952448][000000000000000000000000
[02/06/2017][02:41:35][58162][3690952448][000000000000000000000000
----------
[02/06/2017][03:41:35][57732][3674167040][000000000000000000000000
[02/06/2017][03:41:35][57732][3674167040][000000000000000000000000
我已经执行了以下命令,但它不是捕获每小时日志而不是捕获所有日志
echo $(date -d'now-1 hours' +"[%d/%m/%Y][%H:%M:%S]") | cat mainlog.log
echo $(date --date='1 hours ago' +"[%d/%m/%Y][%H:%M:%S]") | cat mainlog.log
最佳答案
您正在将 echo
的输出通过管道传输到 cat
- 这不会过滤任何内容。 cat
将忽略来自管道 (stdin) 的输入,因为它正在从文件 mainlog.log
中读取。
您可以这样做(注意日期格式的变化 - 我已经删除了 %M
和 %S
部分):
grep -F "$(date -d'now-1 hours' +'[%d/%m/%Y][%H:]')" mainlog.log
grep -F "$(date -d'1 hours ago' +'[%d/%m/%Y][%H:]')" mainlog.log
在这里,grep
会在您的日志文件中查找 date
命令返回的字符串。
关于linux - 每小时从每日日志文件中捕获日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42060298/