将日志文件中的行移动到正确的日期

将日志文件中的行移动到正确的日期

我以前的同事设置了一个logrotate每晚运行的 Crown 任务。问题是这个脚本需要一些时间才能运行,文件中的时间戳以 utc 时间存储,而脚本运行的是本地时间 (cet),因此文件包含 1-2 小时的日志数据 - 运行脚本的时间(最多 5 分钟)。Cron 任务如下所示:

5 0 * * *       root    logrotate -f /path/to/log/settings && second_move_script

设置文件如下所示:

    daily
    rotate 12
    missingok
    notifempty
    delaycompress
    compress
    sharedscripts
    postrotate
            service service_name restart >/dev/null 2>&1 || true
    endscript

second_move_script日志文件移动到长期存储处。

所以今天发生的情况是,数据在 00.00.00 时被缓存到日志文件中,脚本开始运行,它首先开始将数据缓存到一个新文件中,昨天的文件被重命名为 .1,两天前的文件被临时重命名为 .2,.2 文件现在被 gzip 压缩并移动到长期存储中。

是否有一个内置函数可以将具有“错误”时间戳的行从文件 .2 移动到文件 .1,或者这是我应该添加到的内容second_move_script

所有日志文件中已经有昨天 1-2 小时的数据,移动这些行的最佳方法是什么?我在以下工具的帮助下手动移动了几天的数据:这个帖子那么,编写一个 shell 脚本是不是grep -vE "the_correct_date" file1 > file2最好的办法呢?

相关内容