在 Linux 中查看日志的方法很多,主要取决于你使用的发行版、日志系统(syslog / journald)以及你想看哪类日志。下面按常见场景系统说明。
日志一般存放在 /var/log 目录中:
ls /var/log
/var/log/messages:系统通用日志(CentOS / RHEL)/var/log/syslog:系统通用日志(Ubuntu / Debian)/var/log/dmesg:内核启动信息/var/log/auth.log:登录、认证相关(Ubuntu)/var/log/secure:认证相关(CentOS)/var/log/boot.log:启动日志/var/log/cron:定时任务日志/var/log/nginx/、/var/log/httpd/:Web 服务日志# 查看全部
cat /var/log/syslog
# 分页查看
less /var/log/messages
# 实时查看(非常重要)
tail -f /var/log/syslog
# 查看最后 100 行
tail -n 100 /var/log/syslog
# 过滤关键字
grep "error" /var/log/syslog
如果使用 systemd(绝大多数现代 Linux):
# 查看所有日志
journalctl
# 实时查看
journalctl -f
# 查看本次启动日志
journalctl -b
# 查看某个服务
journalctl -u nginx
journalctl -u docker
# 按时间
journalctl --since "2024-01-01 00:00:00"
journalctl --since "1 hour ago"
# 只看错误
journalctl -p err
dmesg
dmesg | tail
dmesg | grep usb
(需要 root 权限时加 sudo)
很多程序有自己的日志目录:
/var/log/nginx/access.log
/var/log/nginx/error.log
/var/log/mysql/
/var/log/docker.log
Docker 示例:
docker logs 容器名
docker logs -f 容器名
# 实时查看并过滤错误
tail -f /var/log/syslog | grep error
# 查看某时间段的日志
sed -n '/10:00/,/11:00/p' /var/log/syslog
# 日志过大时
less +F /var/log/syslog
| 场景 | 推荐命令 |
|---|---|
| 系统整体问题 | journalctl -xe |
| 服务起不来 | journalctl -u 服务名 |
| 实时排错 | tail -f 日志文件 |
| 内核 / 硬件 | dmesg |
| 登录异常 | auth.log / secure |
如果你愿意,可以告诉我:
我可以直接给你精确命令。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。