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

server/2025/1/12 4:50:42/

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.ppmy.cn/server/157666.html

相关文章

C++ 如何将 gRPC集成到机器人系统中

将 gRPC 集成到 C 机器人系统中可以显著提升系统的通信效率和性能。以下是一个基本的步骤指南: 安装 gRPC 和依赖项: 在 Linux 系统上,可以使用以下命令安装 gRPC 和其依赖项:sudo apt update sudo apt install -y build-essentia…

ingress-nginx-controller安装

ingress-nginx-controller安装 ingress-nginx-controller是配置ingress发布的基础。以下主要采用Helm安装。地址: GitHub - kubernetes/ingress-nginx: Ingress NGINX Controller for Kubernetes 1 Helm安装 安装不难,需要找到合适的压缩包就行。我自…

力扣经典题目之219. 存在重复元素 II

今天继续给大家分享一道力扣的做题心得今天这道题目是 219. 存在重复元素 II,我使用 hashmap 的方法来解题 题目如下,题目链接:219. 存在重复元素 II 1,题目分析 此题目给我们了一个整数数组 nums 和一个整数 k ,需要…

国内 Docker 服务状态 镜像加速监控

根据Docker 服务状态选择线路,并且使用多个镜像源来提高镜像下载速度 https://status.1panel.top/status/docker # 将内容写入 /etc/docker/daemon.json 文件,root 用户可以去掉 sudo # 配置 Docker 镜像,使用多个镜像源来提高镜像下载速度…

车载数据结构 --- ARXML VS JSON

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活,除了生存温饱问题之外,没有什么过多的欲望,表面看起来很高冷,内心热情,如果你身…

解决 VSCode 调试时 Python 文件出现相对路径报错问题‘FileNotFoundError’

文章目录 1. 问题描述2. 解决方法 1. 问题描述 在使用 VSCode 进行 Python 开发时,遇到一个的问题:在调试模式下,程序无法读取文件或路径,导致File Not Found Error 错误。然而,当不使用调试模式而是直接运行 Python 文…

vue的KeepAlive应用(针对全部页面及单一页面进行缓存)

KeepAlive的作用是缓存包裹在其中的动态切换组件 当一个组件在 中被切换时,它的 activated 和 deactivated 生命周期钩子将被调用,用来替代 mounted 和 unmounted。这适用于 的直接子节点及其所有子孙节点。 缓存全部页面 将app.vue中的路由出口改为&am…

基于cookie共享实现单点登录

架构图 sso认证中心 基于传统的servlet 方案 提供核心接口 1.登录接口 2.认证接口 判断是否已经登录 也可以进行手动的用户信息同步到各个子服务 3.登录页面 /**基于传统的 servlet 方案 */ WebServlet(urlPatterns "/login.do") public class LoginController ex…