You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置命令输出最近一小时日志,实现hourly audit需求?

嘿,针对你想自动化每小时日志审计、提取过去一小时日志的需求,我整理了几个实用的方案,适配不同的日志场景:

方案1:用journalctl(Systemd系统首选)

如果你的系统用systemd管理日志(大部分现代Linux发行版都是),journalctl自带的时间过滤功能非常省心,直接就能提取过去一小时的日志:

journalctl --since "1 hour ago"

要是只想聚焦某个服务的日志(比如你的应用叫my-app.service),可以加上单元名缩小范围:

journalctl -u my-app.service --since "1 hour ago"

如果需要把审计结果存档,直接重定向到带时间戳的文件即可:

journalctl --since "1 hour ago" > /var/log/hourly-audit-$(date +'%Y%m%d-%H').log

方案2:处理普通文本日志文件

如果你的日志是纯文本格式(比如/var/log/app.log),且每行都带标准时间戳(比如YYYY-MM-DD HH:MM:SS),可以用awk结合date命令精准过滤:

awk -v start="$(date -d '1 hour ago' +'%Y-%m-%d %H:%M:%S')" '$0 >= start' /var/log/app.log

适配不同时间格式

如果你的日志时间格式是MM/DD/YYYY HH:MM这类,只需要调整date的输出格式就行:

awk -v start="$(date -d '1 hour ago' +'%m/%d/%Y %H:%M')" '$0 >= start' /var/log/app.log

如果日志有滚动压缩(比如app.log.1.gz),可以用zcat读取压缩日志并过滤:

zcat /var/log/app.log.1.gz | awk -v start="$(date -d '1 hour ago' +'%Y-%m-%d %H:%M:%S')" '$0 >= start'

方案3:自动化每小时审计(Crontab配置)

要彻底摆脱手动操作,用crontab设置定时任务就可以实现全自动:

  1. 先创建一个审计脚本,比如/usr/local/bin/hourly-audit.sh,根据你的日志类型选对应内容:
#!/bin/bash
# 选项1:使用journalctl的场景
journalctl --since "1 hour ago" > /var/log/hourly-audit-$(date +'%Y%m%d-%H').log

# 选项2:使用普通文本日志的场景
# awk -v start="$(date -d '1 hour ago' +'%Y-%m-%d %H:%M:%S')" '$0 >= start' /var/log/app.log > /var/log/hourly-audit-$(date +'%Y%m%d-%H').log
  1. 给脚本添加执行权限:
chmod +x /usr/local/bin/hourly-audit.sh
  1. 编辑crontab定时任务:
crontab -e
  1. 添加下面这一行,让脚本每小时整点自动执行:
0 * * * * /usr/local/bin/hourly-audit.sh >> /var/log/hourly-audit-cron.log 2>&1

这样每小时0分,系统就会自动提取过去一小时的日志,并存到带时间戳的文件里,方便后续回溯。

后续扩展:添加过滤条件

要是之后需要过滤特定错误,直接在命令末尾追加grep即可,比如:

journalctl --since "1 hour ago" | grep "Connection refused"
# 普通日志场景
awk -v start="$(date -d '1 hour ago' +'%Y-%m-%d %H:%M:%S')" '$0 >= start' /var/log/app.log | grep "ERROR"

内容的提问来源于stack exchange,提问作者DomJangles

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:24:10