在CentOS 6.8这样的企业级Linux发行版中,系统日志是管理员进行故障排查、安全审计、性能监控和系统维护的基石,它们如同飞机的“黑匣子”,忠实记录了系统运行期间发生的各类事件,从内核启动信息到用户登录尝试,再到服务的启动与失败,深入理解并熟练运用系统日志,是每一位合格系统管理员的必备技能。

日志文件的核心位置与分类
CentOS 6.8的系统日志绝大多数都存放在 /var/log 目录下,这个目录是系统专用的可变数据存放区,日志文件作为不断增长的动态数据,自然归属于此,不同的日志文件负责记录不同来源和类型的信息,形成了一个结构化的记录体系。
为了更清晰地了解这些日志文件,下表列出了一些在 /var/log 目录下最常见且最重要的日志文件及其用途:
| 日志文件路径 | 主要用途 | 关键信息 |
|---|---|---|
/var/log/messages |
核心系统日志 | 记录系统启动过程中的大部分信息、内核消息、以及各类系统服务(如网络、驱动)的运行状态和错误,这是最通用的日志文件。 |
/var/log/secure |
安全与认证日志 | 详细记录所有与安全相关的事件,如用户登录(成功/失败)、SSH连接、su/sudo命令的使用、密码更改等,是安全审计的首要文件。 |
/var/log/cron |
计划任务日志 | 记录了crond守护进程执行计划任务(cron job)的相关信息,包括任务的启动、结束、执行结果以及可能的错误。 |
/var/log/dmesg |
内核启动日志 | 存储系统启动时内核检测硬件和加载驱动所产生的消息,使用 dmesg 命令可以查看其内容。 |
/var/log/yum.log |
软件包管理日志 | 记录通过yum命令进行的软件包安装、更新和删除操作,是追踪系统软件变更的宝贵记录。 |
/var/log/maillog 或 /var/log/mail.log |
邮件服务器日志 | 如果系统配置了邮件服务(如Postfix、Sendmail),此文件会记录所有邮件的收发、投递及错误信息。 |
/var/log/boot.log |
系统启动服务日志 | 记录了系统启动过程中各个服务的启动成功或失败状态。 |
/var/log/wtmp |
用户登录历史日志 | 这是一个二进制文件,记录了所有用户的登录、注销和重启事件,需使用 last 命令查看。 |
/var/log/btmp |
失败登录尝试日志 | 同样是二进制文件,专门记录失败的登录尝试,使用 lastb 命令查看,对于发现暴力破解攻击至关重要。 |
核心日志文件深度解析
/var/log/messages:系统的日常记事本
这是系统中最繁忙、信息量最丰富的日志文件,当系统出现异常,如服务突然停止、网络中断、硬件报错时,这里往往是第一个需要查看的地方,网络接口卡出现问题,你可能会在这里看到类似 "eth0: link is down" 的消息,或者某个服务(如MySQL)无法启动,相关错误信息也会被记录于此。
/var/log/secure:安全的第一道防线
此文件对于系统安全至关重要,通过监控这个文件,管理员可以及时发现可疑活动,大量的 "Failed password for invalid user ..." 记录可能预示着有攻击者正在进行用户名猜测的暴力破解,而 "Accepted password for root from ..." 则明确记录了谁在何时成功登录了系统,是审计特权操作的重要依据。
/var/log/cron:自动化任务的晴雨表
如果你设置了定时备份或定时执行的脚本,但发现任务并未按预期完成,/var/log/cron 就是你的诊断工具,它会告诉你cron任务是否被触发,执行时的用户环境,以及脚本的退出状态码,一个非零的退出状态码通常意味着脚本执行过程中遇到了错误。
日志轮转:防止磁盘空间被耗尽
日志文件会持续增长,如果不加管理,最终可能占满整个磁盘分区,导致系统崩溃,CentOS 6.8通过 logrotate 工具来自动化管理日志文件。logrotate 是一个计划任务(通常配置在 /etc/cron.daily/logrotate),它每天会根据配置文件(主配置文件为 /etc/logrotate.conf,自定义配置存放在 /etc/logrotate.d/ 目录)来执行日志轮转操作。

轮转操作通常包括:
- 重命名:将当前的日志文件(如
messages)重命名为带序号的备份文件(如messages.1)。 - 创建新文件:创建一个新的、空的
messages文件供系统继续写入。 - 压缩:将旧的备份文件(如
messages.1)进行压缩(如messages.1.gz)以节省空间。 - 删除:根据保留策略(如保留4周的日志)删除最旧的备份文件。
理解 logrotate 的配置,可以帮助管理员根据实际需求调整日志的保留时间和压缩策略。
日志查看与分析的基本技巧
掌握几个基本的命令行工具,就能高效地从海量日志中提取关键信息。
- 实时监控:使用
tail -f /var/log/messages可以实时查看该日志文件的最新内容,非常适合在复现问题时进行动态观察。 - 翻页浏览:使用
less /var/log/secure可以打开日志文件并自由上下翻页、搜索(按 键后输入关键词)。 - 精确过滤:
grep是最强大的文本搜索工具,要查找所有包含 "error" 关键词的行,可以使用grep -i "error" /var/log/messages(-i表示忽略大小写),要查找特定时间段的日志,可以结合grep和日期格式,如grep "Oct 25 10:" /var/log/secure。
通过组合使用这些工具,管理员可以快速定位问题根源,而不是在庞大的日志文件中徒劳地寻找。
相关问答FAQs
问题1:我的日志文件 /var/log/messages 太大了,我可以直接用 cat /dev/null > /var/log/messages 清空它吗?
解答: 技术上讲,这个命令确实可以清空文件内容,但强烈不建议这样做!原因有两点:

- 信息丢失:清空操作会永久删除所有历史日志,这些日志对于追溯过去发生的问题至关重要。
- 进程问题:正在向该文件写入日志的进程(如syslogd)可能仍然持有旧的文件句柄(inode),清空文件后,它可能无法继续正确写入新的日志,直到服务被重启。
正确的做法是依赖 logrotate 机制来管理日志大小,如果需要立即释放空间,可以手动执行 logrotate -f /etc/logrotate.conf 来强制轮转日志,或者临时重启日志服务 service rsyslog restart。
问题2:为什么我用 less 查看 /var/log/wtmp 文件时,看到的是一堆乱码?
解答: /var/log/wtmp 和 /var/log/btmp 等文件是二进制格式的日志文件,并非纯文本,它们是为了高效存储结构化数据(如登录时间、终端、IP地址等)而设计的,不能直接用 cat、less 等文本查看工具阅读。
正确的查看方法是使用专门为它们设计的命令:
- 查看
/var/log/wtmp(用户登录历史),请使用last命令。 - 查看
/var/log/btmp(失败登录历史),请使用lastb命令。 这些命令会读取二进制文件,并将其内容格式化为人类可读的文本输出。