linux系统中的日志文件按照记录内容和来源可以分为多个类型,不同类型的日志承担着不同的记录职责,覆盖了系统运行的各个层面。了解这些日志类型的特点,是进行系统运维和故障排查的基础。

常见linux日志文件类型
1. 系统通用日志
这类日志是最常用的系统日志,默认由rsyslog服务管理,记录了系统大部分服务的运行信息和通用事件。默认存储路径为/var/log/messages,几乎所有非内核、非特定服务的系统事件都会记录在这里。如果是基于debian的系统,该路径为/var/log/syslog。
我们可以通过以下命令查看最近的系统日志内容:
# 查看最后20行系统通用日志 tail -n 20 /var/log/messages # debian/ubuntu系统使用以下命令 tail -n 20 /var/log/syslog
2. 内核日志
内核日志专门记录linux内核产生的信息,包括硬件检测、驱动加载、内核错误等内容。默认存储路径为/var/log/kern.log,除了该文件外,内核日志也会通过klogd服务输出到环形缓冲区,可以通过dmesg命令直接查看缓冲区中的内核日志。
查看内核日志的示例代码如下:
# 查看内核日志文件 cat /var/log/kern.log # 查看内核环形缓冲区日志 dmesg # 查看最后10条内核缓冲区日志 dmesg | tail -n 10
3. 认证与安全日志
该类型日志记录用户认证相关的操作,比如用户登录、ssh远程连接、sudo提权等操作,同时也会记录安全相关的事件。默认存储路径为/var/log/secure,在debian系统中路径为/var/log/auth.log。
查看认证日志的示例:
# 查看最近的登录记录 tail -n 15 /var/log/secure # 统计ssh登录失败的次数 grep "Failed password" /var/log/secure | wc -l
4. 服务专用日志
很多独立运行的服务会生成自己的专用日志,不依赖rsyslog的统一管理,日志路径由服务自身的配置文件决定。常见的比如nginx的日志默认在/var/log/nginx/目录下,mysql的日志默认在/var/log/mysql/目录下。
以nginx为例,查看访问日志的代码如下:
# 查看nginx访问日志 tail -n 20 /var/log/nginx/access.log # 查看nginx错误日志 tail -n 20 /var/log/nginx/error.log
5. 定时任务日志
记录cron定时任务的执行情况,包括任务是否成功运行、运行结果等信息。默认存储路径为/var/log/cron,通过查看该日志可以判断定时任务是否按照预期执行。
查看定时任务日志的示例:
# 查看最近的定时任务执行记录 tail -n 15 /var/log/cron # 查找特定用户的定时任务执行记录 grep "root" /var/log/cron
日志类型与rsyslog配置对应关系
rsyslog服务通过设施(facility)和优先级(priority)来分类管理日志,不同日志类型对应不同的设施标识,具体对应关系如下:
| 日志类型 | rsyslog设施标识 | 默认存储路径 |
|---|---|---|
| 内核日志 | kern | /var/log/kern.log |
| 用户级日志 | user | /var/log/messages |
| 邮件服务日志 | /var/log/maillog | |
| 系统守护进程日志 | daemon | /var/log/messages |
| 认证相关日志 | auth | /var/log/secure |
| 定时任务日志 | cron | /var/log/cron |
日志查看与分析技巧
除了直接查看日志文件外,还可以结合工具进行日志分析,提升排查效率:
- 使用
grep命令过滤特定关键词的日志,比如过滤错误信息:grep -i "error" /var/log/messages - 使用
less命令分页查看大日志文件:less /var/log/messages,按q退出查看 - 使用
journalctl命令查看systemd管理的日志,该命令可以统一查看所有系统日志,不需要区分具体文件:journalctl -xe查看最近的错误日志
以下是使用journalctl查看特定服务日志的示例:
# 查看nginx服务的所有日志 journalctl -u nginx # 查看最近1小时内的系统日志 journalctl --since "1 hour ago" # 查看指定优先级的日志,err为错误级别 journalctl -p err