在 Linux 中按时间查日志,常见做法取决于你用的是哪种日志(系统日志 / 应用日志 / 自定义日志)以及日志格式。下面按场景说明。
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"
✅ 最方便、最准确
如:
/var/log/messages/var/log/syslog/var/log/securegrep "Jan 5" /var/log/messages
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 '$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"
grep "2024/01/05" /var/log/nginx/error.log
journalctl -u sshd --since "2024-01-05 09:00" --until "2024-01-05 10:00"
| 场景 | 推荐方式 |
|---|---|
| systemd 系统 | journalctl --since |
| 传统日志 | grep / sed |
| 应用日志 | awk |
| 文件时间 | find -newermt |
如果你能告诉我:
我可以给你精确命令。