在 Debian 系统中,日志的查看和搜索方式取决于你使用的 init 系统(通常是 systemd) 以及你想查的日志类型。下面按常见场景给你总结。
Debian 8 及以后默认使用 systemd,日志由 journald 管理。
sudo journalctl
sudo journalctl -f
sudo journalctl -u nginx
sudo journalctl -u ssh
# 今天
sudo journalctl --since today
# 最近1小时
sudo journalctl --since "1 hour ago"
# 指定时间范围
sudo journalctl --since "2024-01-01 00:00:00" --until "2024-01-02 00:00:00"
sudo journalctl | grep "error"
或更直接:
sudo journalctl -u nginx | grep "timeout"
sudo journalctl -p err
即使使用 systemd,很多程序仍会写文件日志。
/var/log/syslog # 系统日志
/var/log/auth.log # 认证、SSH 登录
/var/log/kern.log # 内核日志
/var/log/dpkg.log # 软件安装记录
/var/log/nginx/ # Nginx 日志
/var/log/apache2/ # Apache 日志
# 查看
less /var/log/syslog
# 搜索关键字
grep "Failed password" /var/log/auth.log
# 实时跟踪
tail -f /var/log/syslog
grep + 正则grep -E "error|fail" /var/log/syslog
journalctl + lesssudo journalctl -u docker | less
在 less 中按 / 输入关键字搜索。
logrotate 注意旧日志可能被压缩:
/var/log/syslog.1
/var/log/syslog.2.gz
查看压缩日志:
zcat /var/log/syslog.2.gz | grep "error"
lnav:日志浏览神器sudo apt install lnav
lnav /var/log/syslog
multitail:多日志同时看| 需求 | 推荐命令 |
|---|---|
| 查系统整体问题 | journalctl -p err |
| 查 SSH 登录 | /var/log/auth.log |
| 查服务报错 | journalctl -u 服务名 |
| 实时观察 | journalctl -f |
如果你能告诉我:
我可以给你更精确的命令。