当前位置: 首页 > article >正文

【Linux】lnav - 适用于Linux和Unix的出色终端日志文件查看器

lnav 工具有哪些独特的功能?

  1. 你可以根据需要实时解压缩日志文件,类似于 Linux 和 Unix 上的 z* 工具。
  2. 自动检测日志文件格式。
  3. 按时间合并多个文件,形成一个统一的视图。
  4. 终端颜色支持,让你更容易发现错误和警告。
  5. 支持通过 SSH (SFTP) 查看远程 Linux 和 Unix 机器上的日志文件。
  6. 在日志文件轮换时,自动跟踪文件重命名,并在目录中查找新文件,方便你进行故障排查。
  7. 可以构建错误和警告的索引。
  8. 如果需要,可以漂亮地打印 JSON 格式的日志。
  9. 快速跳转到上一个/下一个错误。
  10. 使用正则表达式进行搜索。
  11. 使用正则表达式高亮文本。
  12. 使用正则表达式或 SQLite 表达式过滤消息。
  13. 漂亮地打印结构化文本。
  14. 查看消息的时间分布直方图。
  15. 使用 SQLite 查询消息。
  16. 简而言之,一个工具涵盖了 grep、cat、tail 等核心工具的功能。

安装

根据你的 Linux 或 Unix 发行版,输入相应的安装命令。

Debian/Ubuntu Linux

使用 aptapt-get 命令:
$ sudo apt install lnav

CentOS/RHEL/Fedora/Rocky/Alma/Oracle Linux

首先启用 EPEL 仓库(Fedora 除外),然后使用以下 dnf 命令安装 lnav:
$ sudo dnf install lnav

Arch Linux

使用 pacman 命令:
$ sudo pacman -S lnav

Alpine Linux

使用以下 apk 命令:
# apk add lnav

OpenSUSE / SUSE Linux

可以尝试以下 zypper 命令:
$ sudo zypper install lnav

macOS 安装 lnav

首先启用并安装 homebrew,然后输入 brew 命令:
$ brew install lnav
或者尝试 port 命令:
$ sudo port install lnav

FreeBSD Unix 安装 lnav

使用 pkg 命令:
$ pkg install lnav

如何使用 lnav 这个基于终端的日志文件导航工具?

语法很简单:
# 日志文件 $ lnav /path/to/file.log $ lnav /path/to/file1.log /path/to/file2.log # 目录名 $ lnav /path/to/your/app/log/dir1/ $ lnav /path/to/your/app/log/dir1/ /var/log/ # 通配符 $ lnav /var/log/nginx/app_*_error*log $ lnav /var/log/nginx/app_*_error*log /var/log/*.err ############################## # 使用 ssh 查看远程主机的日志 # ############################## $ lnav user@server-name-here:/var/log/file.log $ lnav vivek@server1.cyberciti.biz:/var/log/ $ lnav vivek@server1.cyberciti.biz:/var/log/*.err ######################################### # 使用 systemd-journald 的 Linux 系统 # 可以将 lnav 作为分页器 ######################################### $ journalctl | lnav $ journalctl -f | lnav $ journalctl -u ssh.service | lnav

lnav – 在 Ubuntu 上显示 ssh.service 日志的 Linux 和 Unix 终端日志查看器

要查找错误,按 e 会跳转到下一个错误。按 Shift+E 可以跳转到上一个错误。同样,wShift+W 用于跳转到下一个或上一个警告。按 qCTRL+c 退出 lnav 会话或命令提示符。当打开 SFTP URL 时,如果没有为远程主机提供密码,可以使用 SSH 代理进行身份验证。要在文件中搜索文本,可以按 / 进入搜索提示符。按 TAB 可以自动补全搜索字符串。

查看 Docker 容器日志

最简单的语法如下:
$ docker logs container-id | lnav $ docker logs -f container-id | lnav
如果容器 ID 是 611ac85cc97d 或者它叫 “app”,那么:
$ docker logs 611ac85cc97d | lnav $ docker logs -f app | lnav
最新版本的 lnav 还支持以下 docker:// URL 语法:
$ lnav docker://{container_id_or_name}/path/to/log/file $ lnav docker://{container_id_or_name}/var/dir1 $ lnav docker://app/var/log/ $ lnav docker://app/var/log/nginx/nginx.app.log

使用 lnav 查看 docker 日志

监视任何命令的输出

许多命令在工作时会生成输出和日志。例如,以下是如何在编译时监视 make 命令的输出:
$ lnav -e 'make -j8'
-e command1 用于执行名为 command1 的 shell 命令。

使用 SQLite 接口

在 lnav 中,可以使用 SQLite 接口进行日志分析。这是一个杀手级功能。所有日志消息都可以通过为每种日志格式生成的虚拟表访问。这些表以日志格式命名,每条日志消息表示为单独的一行。例如,以下是一个来自 Nginx 访问日志的日志消息:
$ lnav /var/log/nginx/www.cyberciti.biz_https_access.log
现在你会看到

使用 lnav 查看 Nginx 日志

点击放大

你可以按 ; 键激活 SQL 提示符。现在你可以编写一个简单的查询。例如:

SELECT * FROM logline LIMIT 10

然后你会得到结果:

Nginx 日志文件的 SQL 输出

点击放大

别担心,帮助窗口会解释 SQL 字段和示例。只要你懂 SQL 语句,就可以构建查询。你可以提取并保存这些数据。有许多选项,包括命令和高级 SQL 语法,可以满足你的需求,因此建议你收藏文档 URL。

总结

lnav 不仅仅是一个简单的日志文件查看器。它提供了高级功能,可以使用 SQLite 运行 SQL 查询,并根据日志文件生成报告,用于故障排查或从日志文件中获取应用程序使用信息。TUI 界面易于使用。除了 SQL 支持外,你还可以使用正则表达式搜索、对重要数据进行彩色高亮、支持各种流行的日志文件、Linux 容器以及通过 SSH 查看远程文件。我发现这个工具非常实用,强烈推荐给 Linux/Unix 系统管理员和开发者。你可以尝试以下命令启动 lnav,或者访问项目主页:
# 开始基础教程: $ ssh -o PubkeyAuthentication=no -o PreferredAuthentications=password tutorial1@demo.lnav.org # 游乐场: $ ssh -o PubkeyAuthentication=no -o PreferredAuthentications=password playground@demo.lnav.org


http://www.kler.cn/a/472881.html

相关文章:

  • C++ 复习总结记录六
  • 【2024华为OD-E卷-100分-boss的收入】(题目+思路+JavaC++Python解析)
  • Solidity合约编写(五)
  • CANN 学习——基于香橙派 KunpengPro(1)
  • jenkins入门12-- 权限管理
  • doris:远程存储
  • windows从0开始配置llamafactory微调chatglm3-6b
  • 使用vue-pdf预览pdf和解决pdf电子签章显示问题
  • 【中标喜讯分享】泰迪智能科技实力中标长春医学高等专科学校健康大数据管理与服务专业实训软件采购项目
  • 计算机网络——期末复习(7)期末试卷样例3
  • CSS语言的软件工程
  • STM32-DMA数据转运
  • react-quill 富文本组件编写和应用
  • 【合作原创】使用Termux搭建可以使用的生产力环境(九)
  • el-table设置单元格行高间距
  • 从 0 开始上手 Solana 智能合约
  • 网站运营数据pv、uv、ip
  • 200多个高分辨率婚礼旅拍不同环境天空替换素材 Visualsofjulius - Sky Bundle II
  • 基于FPGA的出租车里程时间计费器
  • 欧标开源OCPP充电桩平台 V2.6.8 - 慧知开源充电平台
  • Spark的原理以及使用
  • PyMysql 02|(包含项目实战)数据库工具类封装
  • 结构型模式4.装饰器模式
  • 枫清科技高雪峰: Data-Centric新范式开启,知识引擎+大模型双轮驱动企业智能化
  • Python里JSON orjson ujson在json.loads有什么区别?
  • 性能测试03|JMeter:断言、关联、web脚本录制