温馨提示×

如何按时间查linux日志

小樊
50
2026-09-08 11:37:26
栏目: 智能运维

在 Linux 中按时间查日志,常见做法取决于你用的是哪种日志(系统日志 / 应用日志 / 自定义日志)以及日志格式。下面按场景说明。


一、系统日志(rsyslog / journald)

1️⃣ 使用 journalctl(推荐,systemd 系统)

# 查看今天以来的日志
journalctl --since today

# 查看指定时间段
journalctl --since "2024-01-01 09:00:00" --until "2024-01-01 10:00:00"

# 查看最近 30 分钟
journalctl --since "-30 min"

# 只看某服务
journalctl -u nginx --since "1 hour ago"

✅ 最方便、最准确


2️⃣ 传统日志文件(/var/log)

如:

  • /var/log/messages
  • /var/log/syslog
  • /var/log/secure

方法一:按日期字符串 grep

grep "Jan  5" /var/log/messages

方法二:按时间段(sed)

sed -n '/Jan  5 10:00:00/,/Jan  5 11:00:00/p' /var/log/messages

⚠️ 依赖日志时间格式


二、按文件修改时间查找

如果你是想找某时间段产生的日志文件

# 1天内修改过的
find /var/log -mtime -1

# 某个时间段
find /var/log -newermt "2024-01-05 10:00" ! -newermt "2024-01-05 12:00"

三、应用日志(带时间戳)

示例日志格式

2024-01-05 10:23:45 INFO ...

使用 awk 按时间过滤

awk '$1 >= "2024-01-05" && $1 <= "2024-01-06"' app.log

或精确到秒:

awk '$1" "$2 >= "2024-01-05 10:00:00" && $1" "$2 <= "2024-01-05 11:00:00"' app.log

四、实时查看 + 时间过滤

tail -f app.log | grep "2024-01-05"

五、实用组合示例

查某天 Nginx 错误

grep "2024/01/05" /var/log/nginx/error.log

查某小时内 SSH 登录

journalctl -u sshd --since "2024-01-05 09:00" --until "2024-01-05 10:00"

总结建议

场景 推荐方式
systemd 系统 journalctl --since
传统日志 grep / sed
应用日志 awk
文件时间 find -newermt

如果你能告诉我:

  • 日志路径
  • 日志格式示例
  • Linux 发行版

我可以给你精确命令

0