Linux tail 命令
概述
实时日志监控神器
tail 命令
从文件尾部开始显示内容的强大工具
命令含义
tail 命令用于显示文件的尾部内容,默认显示文件的最后10行。它是Linux/Unix系统中最重要的日志查看和监控工具之一,特别适合实时监控不断增长的日志文件。
实时监控
使用-f参数可以实时监控文件变化
灵活显示
可以指定显示任意行数的内容
高效性能
只读取文件尾部,性能优秀
多种模式
支持按行数或字节数显示
典型使用场景
运维实战命令大全
基本显示
tail /var/log/syslog
显示文件的最后10行(默认行数)
Jan 28 10:30:15 server systemd[1]: Started Daily apt download activities. Jan 28 10:30:15 server systemd[1]: apt-daily.timer: Adding 6h 31min 42.123456s random time. Jan 28 10:35:01 server CRON[12345]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
指定行数显示
tail -n 20 /var/log/nginx/access.log
显示文件的最后20行
tail -20 /var/log/nginx/access.log
简写形式,等同于上面的命令
按字节显示
tail -c 500 /var/log/messages
显示文件的最后500个字节
多文件显示
tail -n 5 /var/log/syslog /var/log/auth.log
同时显示多个文件的尾部内容,会显示文件名分隔符
==> /var/log/syslog <== 最后5行内容... ==> /var/log/auth.log <== 最后5行内容...
从指定行开始显示
tail -n +100 /var/log/apache2/access.log
从第100行开始显示到文件结尾(跳过前99行)
静默模式
tail -q /var/log/syslog /var/log/messages
多文件显示时不显示文件名分隔符
详细模式
tail -v /var/log/nginx/error.log
总是显示文件名,即使只有一个文件
忽略文件大小变化
tail --follow=name /var/log/rotated.log
按文件名跟踪,即使文件被重命名或轮转也继续监控
设置重试间隔
tail -f --retry --sleep-interval=2 /var/log/app.log
设置检查文件变化的间隔时间为2秒,并在文件不存在时重试
实时监控基础
tail -f /var/log/syslog
实时监控系统日志变化(最常用的命令)
持续监控多文件
tail -f /var/log/nginx/access.log /var/log/nginx/error.log
同时监控多个日志文件的实时变化
监控并显示更多行
tail -n 50 -f /var/log/mysql/error.log
先显示最后50行,然后继续实时监控
过滤监控
tail -f /var/log/apache2/access.log | grep "404"
实时监控并只显示包含"404"的行
高亮关键词
tail -f /var/log/syslog | grep --color=always -E "ERROR|WARN|CRITICAL"
实时监控并高亮显示错误关键词
tail + grep 组合
tail -1000 /var/log/nginx/access.log | grep "POST" | wc -l
统计最近1000行中POST请求的数量
tail + awk 数据分析
tail -n 1000 /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -10