在Linux系统中查看日志是系统管理和故障排查的重要技能。以下是详细的日志查看方法和工具总结:
/var/log/messages
/var/log/syslog
/var/log/auth.log
/var/log/kern.log
/var/log/boot.log
/var/log/dmesg
服务专用日志
/var/log/apache2/
或 /var/log/httpd/
/var/log/nginx/
/var/log/mysql.log
tail
查看最新日志
tail -n 20 /var/log/syslog # 查看最后20行
tail -f /var/log/auth.log # 实时跟踪日志(故障排查常用)
less
/more
分页查看
less /var/log/messages # 支持搜索(按`/`输入关键词)
grep
关键词过滤
grep "error" /var/log/syslog # 筛选包含"error"的行
grep -A 3 -B 2 "fail" logfile # 显示匹配行前后上下文
dmesg
查看内核日志
dmesg | grep -i usb # 检查USB设备信息
dmesg -T # 显示人类可读的时间戳
journalctl
(Systemd系统专用)
journalctl -xe # 查看完整系统日志
journalctl -u nginx --since "1 hour ago" # 按服务和时间筛选
journalctl -p err -b # 本次启动的错误日志
multitail
(多日志并行查看)
multitail /var/log/syslog /var/log/auth.log # 同时监控多个日志
logrotate
/etc/logrotate.conf
时间范围过滤
sed -n '/May 10 10:00/,/May 10 11:00/p' /var/log/syslog
统计错误出现次数
grep -o "error" /var/log/messages | wc -l
JSON日志处理(如应用日志)
cat app.log | jq '. | select(.level == "ERROR")'
实时监控工具
lnav
:高亮语法、自动解析时间戳bash
lnav /var/log/syslog
日志文件过大
logrotate
自动压缩旧日志bash
truncate -s 0 /var/log/bigfile.log # 清空文件(保留inode)
权限不足
sudo less /var/log/auth.log # 普通用户需加sudo
日志时间不对
timedatectl
bash
date -d @1620000000 # 将Unix时间戳转为可读格式
gnome-logs
(GNOME桌面环境)KSystemLog
(KDE桌面环境)掌握这些方法后,你可以高效定位系统问题,如服务崩溃、登录失败、硬件错误等。根据实际需求选择合适的工具组合!