在 CentOS 系统中,查看日志是系统维护和故障排查的重要技能。以下是常用的日志查看方法和工具:
1. 基本日志位置
CentOS 使用systemd
管理服务,主要日志存储在:
/var/log/messages
:系统主日志/var/log/secure
:认证和安全相关日志/var/log/maillog
:邮件服务日志/var/log/httpd/
:Apache 服务日志目录/var/log/mysqld.log
:MySQL 数据库日志
2. 查看日志的命令
cat
- 一次性显示全部内容
bash
cat /var/log/messages
适合小文件,但大文件会刷屏。
more
/less
- 分页查看
bash
more /var/log/messages # 向前翻页
less /var/log/messages # 支持上下键和搜索(/关键词)
tail
- 实时跟踪最新内容
bash
tail -n 20 /var/log/messages # 显示最后20行
tail -f /var/log/messages # 实时监控新增内容(按Ctrl+C退出)
grep
- 搜索特定内容
bash
grep "error" /var/log/messages # 搜索包含"error"的行
grep -i "warning" /var/log/messages # 忽略大小写搜索
grep -A 5 -B 3 "failed" /var/log/secure # 显示匹配行前后的上下文
3. 使用journalctl
(systemd 日志)
CentOS 7+ 使用journalctl
管理系统服务日志:
查看全部日志
bash
journalctl
查看特定服务日志
bash
journalctl -u httpd.service # Apache服务日志
journalctl -u mysqld.service # MySQL服务日志
实时监控
bash
journalctl -f # 实时显示最新日志
journalctl -u sshd.service -f # 实时监控SSH服务
按时间过滤
bash
journalctl --since "2025-06-17 09:00" --until "2025-06-17 12:00"
4. 高级技巧
按用户过滤
bash
journalctl _UID=1000 # 查看特定用户的日志
按优先级过滤
bash
journalctl -p err # 只显示错误级别日志
组合命令
bash
journalctl -u nginx.service | grep "404" | less
5. 日志轮转(Log Rotation)
日志文件会定期轮转以避免过大,配置文件位于:
/etc/logrotate.conf
:全局配置/etc/logrotate.d/
:服务特定配置
手动触发轮转:
bash
logrotate -f /etc/logrotate.conf
6. 权限问题
查看某些日志需要 root 权限,使用sudo
:
sudo tail /var/log/secure
7. 第三方工具
-
lnav
:交互式日志查看器,支持多文件和高亮bashsudo yum install lnav -y lnav /var/log/messages
-
ELK Stack:企业级日志管理(Elasticsearch + Logstash + Kibana)
示例场景
-
查看 SSH 登录失败记录:
bashgrep "Failed password" /var/log/secure
-
监控 Apache 访问日志:
bashtail -f /var/log/httpd/access_log
-
查看系统启动日志:
bashjournalctl -b
掌握这些方法后,你可以高效地定位系统问题、监控服务状态和审计安全事件。根据具体需求选择合适的工具和参数组合即可。