⚡ 68 个开发者工具,始终保持最新 — 上游每次发布后数小时内即可通过 apt 获取。 加入 Discord

🎁 apt 镜像需要订阅。免费试用全部工具 14 天,无需银行卡。 查看价格 · 🆓 有一个永久免费的镜像 · 🔐 apt 报 401?

🪵 在 Ubuntu 上安装最新版 lnav

Logfile Navigator,支持 SQL 查询的终端日志查看器

最新版本:0.14.1 · 更新于 2026-11-05
来源版本
deb.griffo.io0.14.1 ✅
官方 Ubuntu0.13.2 🛑
← 返回首页

什么是 lnav?

lnav,即 Logfile Navigator,是一款终端日志查看器,能把来自多个来源的日志文件合并到一个按时间戳排序的视图中。把几个文件、一个目录或一个压缩包交给它,它会自己识别格式(syslog、systemd 日志、Apache 和 nginx 访问日志、JSON lines 等等),按时间交错排列消息,高亮错误和警告,并在文件增长时持续跟踪。之后你可以过滤、搜索、在错误之间跳转;当问题不是一次搜索能回答的时候,还可以用 SQL 查询日志消息。通过 ssh 打开远程日志和打开本地日志一样简单。lnav 由 Tim Stack 用 C++ 编写,采用 BSD-2-Clause 许可证。

🚀 为什么最新版本很重要: lnav 不断增加新的格式、SQL 函数和查看功能,每个版本都会修正某些日志的解析方式。Ubuntu 26.04 冻结在 lnav 0.13.2,Noble 冻结在 0.11.2,Jammy 冻结在 0.9.0,所以默认系统用不上当前版本以及随之而来的格式和修复。本仓库以相同的软件包名提供 lnav 0.14.1,因此下一次 apt upgrade 时就会原地替换发行版自带的 lnav。

⚡ lnav 的主要功能

🔀 一条合并的时间线

同时打开 syslog、应用日志和 Web 服务器日志,lnav 会按时间戳交错排列它们的行,让你按事情发生的顺序阅读整个系统里发生了什么。

🔍 自动识别格式

syslog、journald JSON、Apache 和 nginx 访问日志、JSON lines、logfmt 以及几十种其他格式无需配置即可识别;级别、时间戳和字段都会被解析,错误和警告会被高亮。

🗄️ 用 SQL 查询日志

每种识别出的格式都是一张表。按 ; 就能对日志消息运行 SELECT 查询:按主机统计错误、找出最慢的请求、按状态码分组,结果显示在同一个窗口里。

🌐 通过 ssh 查看远程日志

lnav user@host:/var/log/syslog 借助你平常的 ssh 配置和密钥打开另一台机器上的日志,服务器上无需安装任何代理。

📦 压缩文件与归档

轮转后的 .gz 和 .bz2 日志可以直接打开,.zip 和 .tar 归档也一样,诊断包不用先解压就能阅读。

👀 跟踪、过滤与搜索

文件增长时持续跟踪,过滤器按模式隐藏或保留行,搜索会高亮每一处匹配,单个按键就能跳到下一个错误或警告,重要的内容不会一闪而过。

🚀 始终领先于官方软件源: Debian 和 Ubuntu 在发布时冻结软件包版本,而本仓库通常在上游发布后数小时内就发布新版本。一条简单的 apt upgrade 就能让你保持最新。

📦 从 deb.griffo.io 安装

运行命令

第 1 步:添加仓库

sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | sudo gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(. /etc/os-release; echo ${DEBIAN_CODENAME:-${UBUNTU_CODENAME:-$VERSION_CODENAME}}) main" | sudo tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
sudo apt update
install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(. /etc/os-release; echo ${DEBIAN_CODENAME:-${UBUNTU_CODENAME:-$VERSION_CODENAME}}) main" | tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
apt update

🆓 有一个永久免费的镜像。 deb-free.griffo.io 永久免费提供软件包 — 无需账号、无需订阅,最多落后上游 2 个月,安全修复立即发布。目前收录 cliamp、Ghostty、lazydocker、Oh My Posh、Uncloud 和 Zed;lnav 不在其中,因此今天只能通过上面的仓库安装 — 提出请求即可将其加入。

免费镜像的工作方式 →

第 2 步:安装 lnav

# 安装最新版 lnav(原地替换发行版自带的旧版 lnav)
sudo apt install lnav

# 验证安装
dpkg -s lnav | grep Version
# 安装最新版 lnav(原地替换发行版自带的旧版 lnav)
apt install lnav

# 验证安装
dpkg -s lnav | grep Version

第 3 步:第一次运行

# /var/log 下的日志只有 root 和 adm 组可读
sudo lnav /var/log

# 也可以以 JSON 形式读取 systemd 日志,每个字段都会被解析
journalctl -o json | lnav

# 你自己的日志无需 sudo;格式会自动识别
lnav ~/app/logs/

# 在 lnav 中按 ? 查看内置帮助,按 q 退出
# /var/log 下的日志只有 root 和 adm 组可读
lnav /var/log

# 也可以以 JSON 形式读取 systemd 日志,每个字段都会被解析
journalctl -o json | lnav

# 你自己的日志无需 sudo;格式会自动识别
lnav ~/app/logs/

# 在 lnav 中按 ? 查看内置帮助,按 q 退出

🎯 基本用法示例

阅读和跟踪日志:

# 轮转和压缩过的日志可以直接打开,归档也一样
lnav /var/log/nginx/access.log.2.gz support-bundle.tar.gz

# 多个来源,按时间戳合并成一条时间线
lnav /var/log/nginx/ ~/app/logs/app.log

# 另一台机器上的日志,走你平常的 ssh 配置
lnav user@host:/var/log/syslog

过滤与 SQL:

# 在 lnav 中:e / E 跳到下一个 / 上一个错误,w / W 跳到警告
# :filter-in error         只保留匹配的行
# :filter-out healthcheck  隐藏匹配的行
# ;SELECT c_ip, count(*) AS hits FROM access_log GROUP BY c_ip ORDER BY hits DESC

# 不启动界面执行同样的查询,适合脚本
lnav -n -c ';SELECT sc_status, count(*) FROM access_log GROUP BY sc_status' /var/log/nginx/access.log

保持最新:

# lnav 随系统其他软件一起更新
sudo apt update && sudo apt upgrade

# 查看已安装的版本以及可用的最新版本
apt policy lnav

# 卸载
sudo apt remove lnav
# lnav 随系统其他软件一起更新
apt update && apt upgrade

# 查看已安装的版本以及可用的最新版本
apt policy lnav

# 卸载
apt remove lnav

🔧 工具集成

lnav 能读取任何输出文本的东西:文件、管道以及其他机器:

  • ssh:像 user@host:/var/log/syslog 这样的远程路径会使用你现有的 ssh 配置和密钥;软件包为此推荐安装 openssh-client
  • systemd 日志:把 journalctl -o json(加上 -f 即可持续跟踪)通过管道交给 lnav,日志的每个字段都可以搜索和查询
  • 容器:docker logs -f app 2>&1 | lnav 或 kubectl logs -f pod | lnav 让容器输出同样获得高亮和 SQL
  • 剪贴板:标记若干行后按 c 即可复制;软件包建议为 Wayland 和 X11 安装 wl-clipboard 或 xclip
  • 自定义格式:在 JSON 文件中描述内部日志格式,用 lnav -i myformat.json 安装;之后它就能被识别、高亮,并拥有自己的 SQL 表
  • 脚本与 CI:lnav -n -c 以无界面方式执行命令和查询,交互时回答问题的同一条 SQL 也能在 cron 任务或流水线中运行
  • 文档:man 手册页随软件包提供(man lnav),完整手册位于 docs.lnav.org

🚀 为什么选择 deb.griffo.io?

📊 仓库对比:
  • 官方 Ubuntu: 26.04 提供 lnav 0.13.2,Noble 提供 0.11.2,Jammy 提供 0.9.0,各自在整个版本生命周期内保持冻结
  • 上游下载:从 GitHub 发布页下载包含静态二进制文件的 zip,手动复制到 PATH 中,没有 man 手册页,每次发布都得重新下载
  • 从源码构建:需要 C++ 工具链以及 SQLite、PCRE2、ncurses、libarchive 和 libcurl 的开发包,以及漫长的编译
  • deb.griffo.io: 最新版本,并自动更新

📦 软件包构建仓库

Ubuntu 软件包在这个 GitHub 仓库中自动构建和维护:

🔗 相关软件包

deb.griffo.io 同样提供:

🎯 特别适合: 在多个服务之间追查故障的系统管理员和 SRE、需要把应用日志和 Web 服务器日志对照阅读的开发者、习惯用 grep、sort 和 uniq 回答日志问题却更愿意写一条 SQL 查询的人,以及需要阅读只能通过 ssh 访问的服务器上日志的人。

📦 本仓库最近发布

❓ 常见问题

lnav 在官方 Ubuntu 软件源中吗?

在,但官方 Ubuntu 源只提供 lnav 0.13.2,而本仓库提供 lnav 0.14.1,每次上游发布后数小时内重新构建。

如何在 Ubuntu 上安装最新版 lnav?

按上方说明一次性添加 deb.griffo.io 仓库,然后运行:sudo apt install lnav。之后通过常规的 sudo apt upgrade 获取新版本。

软件包是否有签名?如何构建?

每个软件包都使用仓库的 GPG 密钥(EA0F721D231FDD3A0A17B9AC7808B4DD62C41256)签名,并基于上游发布在公开的 GitHub 仓库中构建,任何人都可以审查。

支持哪些 Ubuntu 版本?

Ubuntu 22.04 Jammy、24.04 Noble、25.10 Questing 和 26.04 Resolute。

开始 14 天免费试用

输入邮箱,我们会在几分钟内发送你的 apt 凭据。无需银行卡。

它将成为你的 apt 登录名。如果继续使用,请用同一邮箱付款,你的机器上无需任何改动。

每个邮箱仅限一次试用。结束前两天我们会发送保留访问的链接。如果你不操作,访问将停止,不会产生任何费用。