tail
命令:实时查看日志末尾
作用:默认显示文件最后10行,适合追踪最新日志。
常用参数:
-n <行数>
:指定显示的行数(-n 20
显示最后20行)。-f
:实时追踪日志更新(按Ctrl+C
退出)。
示例:
# 实时追踪Nginx访问日志 tail -f /var/log/nginx/access.log
journalctl
命令:查看Systemd日志
适用场景:使用Systemd的系统(如Ubuntu 16.04+、CentOS 7+)。
关键参数:
-e
:跳转到日志末尾。-f
:实时追踪。--since "时间"
:按时间过滤(--since "10 minutes ago"
)。
示例:
# 查看系统服务的最新日志(末尾100行) journalctl -e -n 100 # 实时追踪内核日志 journalctl -f -k
grep
管道过滤:快速定位关键信息
作用:结合 tail
过滤特定关键词(如错误、IP地址)。
示例:
# 查看最近100条包含 "error" 的日志 tail -n 100 /var/log/syslog | grep -i "error" # 实时追踪并过滤SSH登录记录 tail -f /var/log/auth.log | grep "sshd"
less
或 more
:交互式浏览大日志文件
技巧:
- 用
less
打开文件后,按Shift+G
跳转到文件末尾。 - 使用 反向搜索关键词(
?error
从末尾向上搜索)。
示例:
less /var/log/kern.log # 打开后按 Shift+G
处理轮转日志(Log Rotation)
背景:日志文件可能被压缩归档(如 syslog.1.gz
)。
解决方案:
- 使用
zcat
或zless
查看压缩文件:zcat /var/log/syslog.1.gz | tail -n 20
- 通过
logrotate
配置确认轮转规则:cat /etc/logrotate.conf # 查看全局配置
组合命令进阶用法
- 查看最近5分钟内的日志:
journalctl --since "5 min ago"
- 统计最新日志中的错误频率:
tail -n 1000 /var/log/syslog | grep "error" | sort | uniq -c
关键目录与日志文件
日志文件 | 用途 |
---|---|
/var/log/syslog |
通用系统日志(Debian/Ubuntu) |
/var/log/messages |
系统日志(RHEL/CentOS) |
/var/log/auth.log |
认证与安全日志 |
/var/log/nginx/*.log |
Nginx服务日志 |
/var/log/mysql/error.log |
MySQL错误日志 |
最佳实践建议
- 权限管理:普通用户需
sudo
访问系统日志(sudo tail /var/log/syslog
)。 - 实时监控:用
tail -f
替代频繁手动查看。 - 日志切割:定期清理旧日志,避免磁盘占满(通过
logrotate
配置)。 - 集中管理:生产环境推荐使用
ELK
(Elasticsearch, Logstash, Kibana)或rsyslog
集中收集日志。
引用说明基于Linux核心工具手册(
man tail
、man journalctl
)及系统管理实践,参考了Linux文档项目(tldp.org)和Systemd官方指南(freedesktop.org),具体命令参数请以系统手册为准(man <命令>
)。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/4595.html