Linux系统日志主要存储在/var/log目录下,不同发行版日志文件和管理工具存在差异,可通过文本命令或journalctl工具查看分析日志。 以下是具体日志文件位置与查看方法:
一、常见日志文件位置传统Linux系统日志集中存储在/var/log目录,核心文件及作用如下:
- /var/log/messages通用系统日志,记录非内核级信息(如服务状态、错误提示),常见于CentOS、RHEL等发行版。
- /var/log/syslogUbuntu/Debian系统的综合日志,包含大部分系统和服务消息。
- /var/log/auth.log(Debian系)记录用户登录、sudo操作、SSH访问等认证事件。
- /var/log/secure(Red Hat/CentOS)存储安全认证信息,如登录失败、权限变更等。
- /var/log/kern.log专门记录内核消息,如驱动加载、硬件错误。
- /var/log/dmesg系统启动时硬件检测和内核初始化信息,内容与dmesg命令输出一致。
- /var/log/boot.log记录系统启动过程的服务输出,便于排查启动故障。
- Web服务日志Nginx日志通常位于/var/log/nginx/,Apache日志位于/var/log/apache2/,包含访问日志(access.log)和错误日志(error.log)。
二、使用journalctl查看systemd日志现代Linux发行版(如Ubuntu 16.04+、CentOS 7+)采用systemd管理日志,通过journalctl命令访问:
- 查看全部日志journalctl
- 查看本次启动日志journalctl -b
- 实时跟踪日志journalctl -f
- 查看特定服务日志journalctl -u ssh.service
- 按时间过滤journalctl --since "1 hour ago" # 最近1小时日志journalctl --until "2025-04-05 10:00" # 指定时间前日志
- 查看高优先级日志(错误及以上)journalctl -p err
- 日志持久化默认日志仅存储在内存中,重启后丢失。若需持久化,执行:sudo mkdir -p /var/log/journal之后日志会自动保存到磁盘。
三、基础命令查看文本日志对于传统文本日志文件,结合以下命令可高效分析:
- tail查看文件末尾内容,加-f实时追踪新日志:tail /var/log/syslog # 查看最近10行tail -f /var/log/messages # 实时监控日志更新
- less分页浏览日志,支持搜索(按/输入关键词):less /var/log/auth.log
- grep搜索包含关键词的日志行:grep "error" /var/log/syslog # 筛选错误信息grep "failed" /var/log/secure # 查找认证失败记录
- dmesg查看内核环缓冲区信息,诊断硬件或驱动问题:dmesg # 显示全部内核日志dmesg -T # 以人类可读时间格式显示
- cat直接输出文件内容,适用于短日志:cat /var/log/boot.log # 查看启动日志
四、权限与注意事项- 权限要求多数日志文件仅对root或adm组用户可读,普通用户需加sudo执行命令。例如:sudo less /var/log/secure
- 日志轮转系统通过logrotate自动轮转旧日志,压缩文件以.1、.2.gz等后缀命名。查看压缩日志需使用zcat或zless:zcat /var/log/syslog.1.gz # 查看压缩的旧日志zless /var/log/messages.2.gz # 分页浏览压缩日志
- 磁盘空间管理定期清理或归档日志,避免占用过多空间。可通过journalctl --disk-usage查看日志占用情况,或设置日志保留策略:journalctl --vacuum-size=100M # 保留日志不超过100MB
掌握上述路径和命令后,可根据发行版选择对应方法快速定位系统问题。例如,排查SSH登录失败时,Debian系可检查/var/log/auth.log,CentOS系则查看/var/log/secure,或直接使用journalctl -u sshd。