linux - 每小时从每日日志文件中捕获日志

标签 linux bash shell

我有一个每天轮换的日志文件(比如说主日志文件)我需要每小时捕获一次日志,然后存储每小时的日志文件

例如;

当我在 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/

相关文章:

node.js - OSX Yosemite 上的meanjs 堆栈安装 : mean: command not found

ios - 运行自定义shell脚本 'Copy Pods Resources'错误

Git Hook - 预提交 - 问题 - exec 后不执行

linux - 无法从android中的用户空间打开设备节点

c - 我想获取宿主语言文件的时间(ctime(..)?)

bash - scp/localdir/root @ ubuntu的目标路径是什么?

linux - 逃命~!在 awk(bash 命令)中,反斜杠不是行中的最后一个字符

bash - bash 脚本中的变量值不会改变

linux - 有没有一种简单的方法来 fork 文件描述符?

c++ - sockaddr - 打印 sa_data 持有的所有信息 - C++