hj12 发表于 3 天前

Linux查询日志的常用命令

在 Linux 系统中,查询和分析日志是系统管理的重要任务之一。以下是常用的日志查询命令和技巧:
1. 核心日志文件位置

[*]/var/log/messages:通用系统日志(CentOS/RHEL)
[*]/var/log/syslog:通用系统日志(Debian/Ubuntu)
[*]/var/log/auth.log:认证相关日志(登录、sudo等)
[*]/var/log/secure:安全相关日志(CentOS/RHEL)
[*]/var/log/kern.log:内核日志
[*]/var/log/dmesg:内核启动日志(也可用 dmesg 命令)
[*]/var/log/nginx/、/var/log/apache2/:Web服务器日志
2. 基础查看命令

[*]tail - 查看日志尾部内容,常用于实时监控日志更新。
tail -f /var/log/syslog       # 实时跟踪日志更新(最常用)
tail -n 100 /var/log/syslog   # 显示最后100行
[*]head - 查看日志头部
head -n 50 /var/log/syslog    # 显示前50行
[*]cat - 查看完整日志(适合小文件)
cat /var/log/syslog         # 一次性显示全部内容(慎用于大文件)
[*]less/more - 分页查看
less /var/log/syslog          # 支持上下翻页、搜索(按 `/` 搜索,`q` 退出)
more /var/log/syslog          # 基本分页查看3. 过滤与搜索

[*]grep - 关键词过滤
grep "error" /var/log/syslog         # 搜索包含 "error" 的行
grep -i "timeout" /var/log/nginx/access.log# 忽略大小写搜索
grep -A 3 -B 2 "panic" /var/log/messages    # 显示匹配行及前后几行(-A后,-B前)
grep -v "192.168.1.1" /var/log/nginx/access.log # 排除特定IP的日志
[*]awk - 按列提取
awk '{print $1}' /var/log/nginx/access.log      # 提取第一列(如IP地址)
awk '$9 == 500 {print $7}' /var/log/nginx/access.log# 过滤HTTP状态码为500的请求路径4. 时间范围查询

[*]sed - 按时间范围过滤
sed -n '/Apr 10 10:00/,/Apr 10 11:00/p' /var/log/syslog# 提取某时间段的日志
[*]journalctl - Systemd日志查询(适用于使用Systemd的系统)
journalctl -u nginx.service      # 查看Nginx服务的日志
journalctl --since "2023-04-01" --until "2023-04-02"
journalctl -f                   # 实时跟踪日志(类似 `tail -f`)
journalctl -p err -b            # 查看本次启动的所有错误日志5. 组合命令示例

[*]统计Nginx日志中访问量最高的IP
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -n 10
[*]实时监控包含"error"的日志
tail -f /var/log/syslog | grep -i "error"
[*]查找过去1小时内修改过的日志文件
find /var/log -type f -mmin -60 -name "*.log"6. 日志轮转与管理

[*]logrotate:自动压缩和清理旧日志(配置文件在 /etc/logrotate.conf 和 /etc/logrotate.d/)。
[*]zcat/zgrep:查看压缩后的日志:
zcat /var/log/syslog.1.gz       # 查看压缩日志
zgrep "error" /var/log/syslog.2.gz# 搜索压缩日志中的关键词


通过组合这些命令,可以高效地定位和分析日志中的问题,希望这些能对你有所帮助。



页: [1]
查看完整版本: Linux查询日志的常用命令