欢迎光临
我们一直在努力

Linux 查看日志常用命令

主要命令:cat、tac、more、less、tail、head、grep、awk、sed

大数据场景:YARN、Flink、Spark、Hadoop、keepalived 日志;排查报错、OOM、任务异常、数据倾斜。

日志常见目录参考:

  • YARN 容器日志:/var/log/hadoop-yarn/
  • 系统日志:/var/log/messages
  • 应用日志:/opt/xxx/logs/*.log

1、cat 一次性全部输出日志

cat app.log

  • 特点:一次性把文件全部打印屏幕;大日志文件严禁直接 cat,刷屏,占满终端。
  • ✅适用:小文件,几十 KB 以内。
  • ❌禁止:几个 GB 的日志直接 cat,终端卡死。

# 只输出最后20行
cat app.log | tail -20

2、tac 倒序输出(cat 反过来)

tac app.log

从日志最后一行往第一行打印。

场景:报错一般在日志末尾,想看最新日志,不想翻页;

小日志文件使用。

3、more 分页查看

more app.log

操作按键:

  • 空格:下一页
  • Enter:下一行
  • q:退出 缺点:不能往回翻,只能往下翻。 适用:中等大小日志。

4、less【生产最推荐,神器】⭐

less app.log

常用快捷键(非常实用)

按键作用
空格 向下翻页
b 向上翻页
j / ↓ 向下一行
k / ↑ 向上一行
G 跳到日志最后一行(看最新日志)
g 跳到第一行
/Exception 向下搜索关键字 Exception,n 下一个匹配,N 上一个
?Error 向上搜索 Error
q 退出

✅真实场景:排查 Flink/Spark 任务本地日志,日志几个 GB,less 不会一次性加载全部文件,打开速度快。

进入 less 之后直接按大写G跳到末尾,然后/OOM搜索 OOM 关键字。

# 直接打开并定位到最后
less +G app.log

5、tail 高频!看末尾日志,实时跟踪日志

① tail -n 查看末尾 N 行

tail -n 100 app.log
# 简写
tail -100 app.log

✅场景:程序刚报错,看日志最后 100 行,找报错堆栈。

② tail -f 实时跟踪日志(流式输出)

tail -f app.log

实时打印文件新增内容;窗口挂住,Ctrl+C 退出。

⚠️坑:日志文件被日志轮转 (logrotate) 重命名,tail‑f会继续读旧文件,看不到新日志。

③ tail -F 【生产优先用大写 F】

tail -F app.log

-F = follow+retry。文件被轮转、删除,会自动跟踪新建同名日志文件。

✅真实场景:观察正在运行的 Flink TaskManager、YARN NM 实时日志,日志会切割轮转,一定要用 tail -F。

示例:观察 yarn nodemanager 实时日志

tail -F /var/log/hadoop-yarn/yarn-nodemanager.log

6、head 查看日志头部

head -n 50 app.log

看日志前 50 行;一般用于看程序启动参数、版本信息。

7、grep 过滤关键字(排查报错核心)

# 查找包含"Exception"行
grep "Exception" app.log

# -i 忽略大小写
grep -i "error" app.log

# -n 输出行号
grep -n "OOM" app.log

# -A after:匹配行之后输出N行;报错堆栈要往后看几行!
grep -A20 "OutOfMemoryError" app.log

# -B before:匹配行之前输出N行
grep -B10 "OutOfMemoryError" app.log

# -C context:前后各输出N行
grep -C15 "OutOfMemoryError" app.log

# -v 反向过滤,排除某些日志
grep -v "INFO" app.log #过滤掉INFO,只看WARN ERROR

✅真实场景:排查 Reduce OOM,找异常堆栈

grep -A30 "java.lang.OutOfMemoryError" taskmanager.log

-A30:匹配到 OOM 那一行,额外打印后面 30 行,完整看到异常栈。

grep 多文件批量查找

# 当前目录下所有.log文件搜索关键字
grep -i "OOM" *.log

8、组合使用,生产真实命令示例

示例 1:实时跟踪日志,同时过滤错误(tail+grep)

tail -F app.log | grep -i error

实时输出,只打印 error 日志。

示例 2:大日志,把报错部分保存出来,方便分析

grep -A50 "Exception" huge.log > error.log

把异常相关行输出到 error.log,下载分析,不用打开几个 G 大文件。

示例 3:查看 YARN 容器日志,只看 ERROR、忽略 INFO

cat container.log | grep -v INFO

9、awk 统计日志、提取字段

场景:日志有固定格式,统计错误数、提取 IP、时间。

#统计error出现多少次
grep -i "error" app.log | awk '{print $0}' | wc -l

10、sed 根据行号截取日志

大日志文件,已知报错在 12000‑13000 行,截取这一段

sed -n '12000,13000p' app.log > part.log

✅场景:less 查到报错行号,sed 截取一小段,不用处理整个 GB 级日志。

真实排错场景速查表

场景推荐命令说明
GB 级别大日志文件,查找 OOM 异常 less +G xxx.log 然后 /OOM 不加载全量文件,速度快
实时观察正在运行服务日志(日志会轮转切割) tail -F xxx.log 不用 tail‑f,防止日志切割看不到新日志
找到 OOM 并且需要完整异常堆栈 grep -A30 "OutOfMemoryError" xxx.log -A 带出后面堆栈信息
只想看报错,过滤掉大量 INFO 日志 grep -v "INFO" xxx.log 过滤冗余正常日志
已知报错行号,截取一小段日志 sed -n '10000,10200p' xxx.log > temp.log 导出片段,方便分析
小日志快速看最新内容 `tac xxx.log head -50` 倒序输出最新 50 行

精简版

查看日志常用:

  • cat 适合小文件;大文件禁止 cat。
  • less 是大日志首选,可以上下翻页、搜索关键字,不会加载全部文件。
  • tail‑n 看末尾行;tail‑f 实时跟踪,tail‑F 支持日志轮转,生产优先用大写 F。
  • grep 用来过滤关键字, -A/-B/-C可以打印匹配行前后日志,排查异常堆栈非常有用。
  • sed 可以按行截取大日志片段,避免操作整个超大日志文件。
  • 小坑提醒

  • tail -f:日志文件被 logrotate 切割重命名后,依然读取旧句柄,看不到新日志;生产一律用 tail -F。
  • 几个 GB 日志不要 cat、不要直接 vi 打开,vi 会加载全部文件,机器卡顿。优先 less /sed/grep。
  • grep 找异常一定要带上 -A,异常堆栈都在匹配行的后面。
  • 赞(0)
    未经允许不得转载:171主机测评 » Linux 查看日志常用命令
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址