Linux系统日志存于/var/log目录,核心文件包括syslog、auth.log、dmesg等,记录系统、认证及内核信息;使用tail、grep、less命令可实时查看与筛选日志;systemd系统通过journalctl管理二进制日志,支持按服务、时间、优先级过滤,如journalctl -u nginx.service --since "2024-04-05";journald默认不持久,需配置Storage=persistent实现长期存储;logrotate工具按策略轮转日志,防止磁盘溢出,配置文件为/etc/logrotate.conf及/etc/logrotate.d/目录下服务专属配置。

在Linux系统中,查看服务器日志是排查故障、监控系统运行状态和分析安全事件的重要手段。不同发行版的日志管理方式略有差异,但核心机制相似。掌握日志的存储位置、查看方法以及日志系统的运作原理,能显著提升运维效率。
常见日志文件位置与用途
Linux系统中的日志通常存放在/var/log目录下,每个文件记录特定类型的信息:
- /var/log/messages:通用系统日志,记录非内核和非服务的常规信息(CentOS/RHEL等传统系统)
- /var/log/syslog:Ubuntu/Debian等系统的主要日志文件,包含所有系统消息
- /var/log/auth.log:记录用户登录、sudo操作、SSH访问等认证相关事件
- /var/log/dmesg:内核环缓冲日志,显示硬件检测、驱动加载等启动时的详细信息
- /var/log/boot.log:系统启动过程中的服务启动日志
- /var/log/kern.log:专门记录内核产生的消息
- /var/log/nginx/access.log 或 /var/log/apache2/access.log:Web服务器访问日志
- /var/log/secure(RHEL/CentOS):记录安全相关的操作,如SSH登录尝试
可通过ls /var/log查看当前系统中存在的日志文件,结合tail、less或grep命令进行筛选和浏览。
使用journalctl管理systemd日志
现代Linux发行版大多采用systemd作为初始化系统,其自带的日志服务journald将日志以二进制格式存储,支持更强大的查询功能。
- 查看全部日志:journalctl
- 实时跟踪日志:journalctl -f
- 查看特定服务日志:journalctl -u nginx.service
- 按时间过滤:journalctl --since "2024-04-05" --until "2024-04-06 10:00"
- 查看本次启动的日志:journalctl -b
- 显示错误级别日志:journalctl -p err
journald日志默认不持久保存,重启后可能丢失。若需长期保留,可启用持久化存储,修改配置文件/etc/systemd/journald.conf,取消Storage=auto注释并设为Storage=persistent。
常用日志查看命令技巧
熟练使用文本处理命令可以快速定位问题。
- tail -f /var/log/syslog:动态查看日志新增内容,适合监控实时输出
- grep "Failed password" /var/log/auth.log:查找SSH暴力破解尝试记录
- less /var/log/dmesg:分页查看内核日志,支持搜索和上下翻阅
- cat /proc/cpuinfo 和 dmesg | grep CPU:结合查看硬件初始化信息
- journalctl -u docker.service --no-pager | tail -20:查看Docker服务最近20条日志
对于长时间运行的服务,建议结合时间范围和关键词双重过滤,避免输出过多干扰信息。
日志轮转与清理机制
日志文件会不断增长,系统通过logrotate工具自动管理日志轮转,防止磁盘被占满。
- 配置文件位于/etc/logrotate.conf,服务特定配置在/etc/logrotate.d/目录下
- 典型策略包括按天轮转、压缩旧日志、保留一定数量的备份文件
- 手动执行轮转:logrotate -f /etc/logrotate.conf
- 查看logrotate状态:/var/lib/logrotate/status
定期检查日志保留策略是否合理,避免因日志过大影响系统性能,也防止关键信息被过早删除。
基本上就这些。理解日志来源、掌握查看工具、熟悉过滤技巧,就能高效应对大多数服务器问题排查场景。










