Ubuntu 中如何查看系统日志(syslog)?
Ubuntu 配置 rsyslog 时常见日志文件为 /var/log/syslog;systemd journal 用 journalctl 查看。本文介绍查看方法、常用过滤技巧及 /var/log 下其他重要日志文件。
Ubuntu 安装并配置 rsyslog 的常见主系统日志是 /var/log/syslog,用 tail -F /var/log/syslog 实时跟踪,或 grep 关键词 /var/log/syslog 过滤。systemd 系统也可以用 journalctl 查看。
基本查看命令
# 实时跟踪最新日志
tail -F /var/log/syslog
# 查看最近 100 行
tail -n 100 /var/log/syslog
# 搜索关键词
grep "error" /var/log/syslog
grep "ssh" /var/log/syslog
# 分页浏览
less /var/log/syslog # 按 / 搜索,q 退出
journalctl 方式(更现代)
journalctl # 全部日志
journalctl -n 100 # 最近 100 行
journalctl -f # 实时跟踪
journalctl -u nginx # 只看某个服务
journalctl --since "1 hour ago" # 按时间过滤
journalctl -p err # error 及更严重;仅error用 -p err..err
/var/log 下的其他重要日志
| 文件 | 内容 |
|---|---|
/var/log/syslog |
系统主日志 |
/var/log/auth.log |
认证/登录/sudo |
/var/log/kern.log |
内核消息 |
/var/log/dmesg |
启动硬件信息 |
/var/log/apt/ |
软件包安装记录 |
/var/log/nginx/ |
Nginx 访问/错误日志 |
注意 RHEL/CentOS 的主日志是 /var/log/messages(不是 syslog)。
需要同时排查多台 Ubuntu 主机时,可用观测云 DataKit 日志采集器读取实际存在的 /var/log/syslog,按主机和故障时间筛选。若系统只将消息保存在 journal 中,应先确定导出或转发方式,不能把缺少 syslog 文件当作采集故障。
常见问题(FAQ)
Q:syslog 文件很大怎么快速看?
A:用 grep 先过滤、tail 看末尾、less 分页;老日志在 syslog.1、syslog.2.gz 等轮转文件中(zgrep 可以直接搜压缩文件)。
Q:日志里的时间是什么时区?
A:取决于来源、格式与转发配置;传统本机 syslog 常用本地时区,但转发日志可能来自另一时区或带显式偏移。timedatectl 只显示当前主机设置。
Q:没有权限读 syslog?
A:常见配置属主/组为 syslog:adm,应先检查实际文件权限与访问范围,把用户加进 adm 组(sudo usermod -aG adm 用户名)或用 sudo。