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 [ hostname ] 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://[ hostname ]/util-linux/util-linux
- The Documentation/ directory in the repo contains design notes and internal docs
- Release notes for each version: https://[ hostname ]/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://[ hostname ]/linux/man-pages/ — Michael Kerrisk's site, the most complete and well-maintained online man page mirror.

[ hostname ]
- https://[ hostname ]/pub/linux/utils/util-linux/ — release tarballs

Distro-specific
- Arch Wiki covers many util-linux tools in depth with practical usage examples: https://[ hostname ] — search by tool name
- Debian package tracker: https://[ hostname ]/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.

in this section
* ionice/
* logger/
* rename/