Andrew Mercer

util-linux is a standard package of low-level system utilities maintained by the Linux kernel organization. It's one of the most fundamental packages on any Linux system — if you're on Linux, you're using it constantly without thinking about it.


What it is

util-linux is a collection of essential Unix utilities that handle things the kernel exposes but doesn't provide userspace tools for — block devices, filesystems, terminals, process scheduling, system clocks, logins, and more. It's maintained by Karel Zak at Red Hat and lives under the kernel.org umbrella.

It is not part of GNU coreutils (which gives you ls, cp, mv, etc.) — the two packages are complementary and both are essentially always present on a Linux system.


Key utilities by category

Block devices and filesystems
- lsblk — list block devices in a tree
- blkid — print block device attributes (UUID, type, label)
- findmnt — find/list mounted filesystems
- mount / umount — mount and unmount filesystems
- mkswap / swapon / swapoff — swap space management
- fdisk / cfdisk / sfdisk — partition table manipulation
- partx / addpart / delpart — kernel partition table updates
- losetup — set up and control loop devices
- fsck — filesystem check (frontend; delegates to fs-specific tools)

System information
- lscpu — CPU architecture information
- lsmem — list memory ranges
- lsns — list Linux namespaces
- lsipc — show IPC facilities
- lsirq — list IRQs
- uname — print system information (also in coreutils, util-linux version differs slightly)
- dmesg — print or control the kernel ring buffer

Process and scheduling
- kill / killall — send signals to processes
- taskset — set or retrieve a process's CPU affinity
- chrt — manipulate real-time attributes of a process
- ionice — set or get I/O scheduling class and priority
- prlimit — get and set process resource limits
- nsenter — enter namespaces of another process
- unshare — run a program in new namespaces

Terminal and login
- login — sign in
- agetty — alternative Linux getty (manages terminal lines)
- su — substitute user identity
- runuser — run a command with substitute user and group ID
- wall — send a message to all logged-in users
- mesg — control write access to your terminal
- script / scriptreplay / scriptlive — record and replay terminal sessions
- setterm — set terminal attributes

Clock and time
- hwclock — read or set the hardware clock
- timedatectl — control the system time and date (actually systemd, but closely related)

Miscellaneous but important
- flock — manage locks from shell scripts
- uuidgen — generate a UUID
- rename — rename files (the non-Perl version)
- column — columnate lists (you use this constantly in shell scripts)
- rev — reverse lines of a file
- look — display lines beginning with a given string
- cal — display a calendar
- hexdump / xxd — display file contents in hex
- strings — print printable strings in a binary file
- more / less — pagers (yes, more ships with util-linux on most distros)
- whereis — locate binary, source, and man pages for a command
- logger — shell command interface to syslog
- ipcs / ipcrm — IPC resource reporting and removal
- choom — adjust OOM score for a process

touch specifically lives in GNU coreutils, not util-linux — which is why man touch will show a coreutils man page. The timestamp manipulation you just used (-t, -d) is coreutils behavior.


Versioning and distributions

util-linux versions track fairly closely with kernel releases. Current stable is in the 2.39–2.40 range. Distros ship different versions:

  • Debian/Ubuntu: apt show util-linux
  • RHEL/Fedora: rpm -qi util-linux
  • Alpine: apk info util-linux

Some utilities have been split into a separate util-linux-extra package on Debian-based systems as of recent releases — things like hexdump, look, ul.


Documentation sources

Primary / upstream
- GitHub repo (source + release notes): https://github.com/util-linux/util-linux
- The Documentation/ directory in the repo contains design notes and internal docs
- Release notes for each version: https://github.com/util-linux/util-linux/releases

Man pages — the authoritative reference for each tool

man lsblk
man flock
man hwclock
# etc.

Online versions of the man pages: https://man7.org/linux/man-pages/ — Michael Kerrisk's site, the most complete and well-maintained online man page mirror.

kernel.org
- https://www.kernel.org/pub/linux/utils/util-linux/ — release tarballs

Distro-specific
- Arch Wiki covers many util-linux tools in depth with practical usage examples: https://wiki.archlinux.org — search by tool name
- Debian package tracker: https://packages.debian.org/util-linux

Books
- The Linux Command Line by William Shotts covers many of these tools in a practical context
- Linux System Programming by Robert Love goes deeper on the kernel interfaces these tools wrap


The most useful habit is just man <tool> — the util-linux man pages are unusually well written compared to much of the Linux ecosystem, and Karel Zak's team keeps them current with each release.