This is the second in a new series highlighting best-of-breed utilities. We’ll be covering a wide range of utilities including tools that boost your productivity, help you manage your workflow, and lots more besides. For this article, we’ll put lnav under the spotlight.
lnav is a curses-based utility for viewing and analyzing log files. The software is designed to extract useful information from log files, making it easy to perform advanced queries. Think of lnav as an enhanced log file viewer.
For many years system and kernel logs were handled by a utility called syslogd. Most Linux-based operating systems have since moved to systemd, which has a journal. That’s a giant log file for the whole system. Various software and services write their log entries into systemd’s journalctl. lnav can consume the JSON version of journalctl’s output. And it supports a wide range of other log formats. For systems running systemd-journald, you can also use lnav as the pager.
We included a couple of log analyzers in our Essential System Tools feature. And lnav wouldn’t be totally out of place in that feature. lnav is optimized for small-scale deployments.
The developers provide a generic 64-bit statically linked binary, as well as statically linked 64-bit binaries for RPM and DEB package formats. There’s also a snap available.
As the full source code is available, you can compile and install the software yourself.
$ git clone https://github.com/tstack/lnav.git
$ cd lnav
$ make -j4
$ sudo make install
The configure command didn’t initially work, as our Ubuntu system was bizarrely missing libsqlite3-dev. Installing that package with the command fixed the issue.
$ sudo apt install libsqlite3-dev
One word about the make command, the -j flag tells make that it’s instructed to spawn the provided amount of ‘threads’. Ideally each thread is executed on its own core/CPU, so your multi-core/CPU machine is used to its maximum. This speeds up compilation.
There’s no setup or configuration for lnav, and it automatically detects most log formats, so you only need to point this tool at the logfile you want to investigate.
Complete list of articles in this series:
|Abricotine||Markdown editor with inline preview functionality|
|Ananicy||Shell daemon created to manage processes’ IO and CPU priorities|
|broot||Next gen tree explorer and customizable launcher|
|cheat.sh||Community driven unified cheat sheet|
|croc||Securely transfer files and folders from the command-line|
|Deskreen||Live streaming your desktop to a web browser|
|duf||Disk usage utility with more polished presentation than the classic df|
|exa||A turbo-charged alternative to the venerable ls command|
|fd||Wonderful alternative to the venerable find|
|fkill||Kill processes quick and easy|
|fontpreview||Quickly search and preview fonts|
|LanguageTool||Style and grammar checker for 30+ languages|
|Liquid Prompt||Adaptive prompt for Bash & Zsh|
|lnav||Advanced log file viewer for the small-scale; great for troubleshooting|
|lsd||Like exa, lsd is a turbo-charged alternative to ls|
|McFly||Navigate through your bash shell history|
|mdless||Formatted and highlighted view of Markdown files|
|OCRmyPDF||Add OCR text layer to scanned PDFs|
|Paperwork||Designed to simplify the management of your paperwork|
|PDF Mix Tool||Perform common editing operations on PDF files|
|peco||Simple interactive filtering tool that's remarkably useful|
|ripgrep||Recursively search directories for a regex pattern|
|scrcpy||Display and control Android devices|
|tldr||Simplified and community-driven man pages|
|tmux||A terminal multiplexer that offers a massive boost to your workflow|
|Tusk||An unofficial Evernote client with bags of potential|
|Ulauncher||Sublime application launcher|
|Watson||Track the time spent on projects|