在Linux系统中,日志查询是系统管理和故障排查的重要技能。以下是常用的日志查询命令和技巧:
/var/log/messages
:通用系统日志(CentOS/RHEL)/var/log/syslog
:通用系统日志(Debian/Ubuntu)/var/log/auth.log
:认证相关日志(如SSH登录)/var/log/kern.log
:内核日志/var/log/dmesg
:硬件和启动日志(内核环形缓冲区)/var/log/nginx/
、/var/log/apache2/
:Web服务日志tail
- 查看日志尾部tail -n 20 /var/log/syslog # 查看最后20行
tail -f /var/log/nginx/access.log # 实时追踪日志(常用!)
head
- 查看日志头部head -n 10 /var/log/syslog # 查看前10行
cat
- 显示完整日志(小文件)cat /var/log/boot.log # 显示全部内容(慎用于大文件)
less
/more
- 分页查看less /var/log/syslog # 支持搜索(按 `/` 输入关键词)
more /var/log/syslog # 基本分页
grep
- 关键词过滤grep "error" /var/log/syslog # 搜索包含"error"的行
grep -i "timeout" /var/log/nginx/error.log # 忽略大小写
grep -A 3 -B 2 "fail" /var/log/messages # 显示匹配行及前后内容
journalctl
- Systemd日志查询(现代Linux发行版)journalctl -u nginx.service # 查看Nginx服务日志
journalctl -f # 实时追踪日志
journalctl --since "2024-01-01" --until "2024-01-02"
journalctl -p err -b # 本次启动的错误日志
awk
- 提取特定字段awk '/Failed password/ {print $11}' /var/log/auth.log # 提取SSH失败IP
sed
- 流编辑器sed -n '/Jan 10 14:00/,/Jan 10 15:00/p' /var/log/syslog # 提取时间范围日志
cut
- 按列分割cut -d' ' -f1,5 /var/log/nginx/access.log # 提取IP和请求路径
logrotate
- 日志轮转logrotate -vf /etc/logrotate.conf # 手动触发日志轮转
# 统计Nginx访问日志中TOP 10的IP
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -10
# 实时监控SSH登录失败
tail -f /var/log/auth.log | grep "Failed password"
# 查找最近1小时修改过的日志文件
find /var/log -type f -mmin -60 -name "*.log"
logwatch
:自动生成日志摘要报告goaccess
:实时Web日志分析(支持HTML可视化)ELK Stack
(Elasticsearch+Logstash+Kibana):企业级日志分析平台root
权限查看部分日志(如/var/log/secure
)。less
或grep
过滤,避免直接cat
。/dev/null > /var/log/syslog
)。掌握这些命令后,你可以高效定位系统问题、分析服务异常或监控安全事件。