Debian buster: changes in util-linux #newinbuster
Debian buster is there, and similar to what we had with #newinwheezy, #newinjessie and #newinstretch it’s time for #newinbuster!
Update on 2019-07-26 22:55 UTC: Cyril Brulebois pointed out, that findmnt (find a filesystem) was available in Debian/stretch already as part of the mount package, updated the blog post accordingly
One package that isn’t new but its tools are used by many of us is util-linux, providing many essential system utilities. We have util-linux v2.29.2-1+deb9u1 in Debian/stretch and util-linux v2.33.1-0.1 in Debian/buster. There are many new options available and we also have a few new tools available.
Tools that have been taken over from / moved to other packages
- cfdisk + fdisk + sfdisk (tools to display or manipulate a disk partition table) were moved from util-linux to fdisk
- findmnt (find a filesystem) is no longer shipped via the mount binary package (of util-linux source package) but part of the util-linux binary package itself nowadays
- setpriv (run a program with different Linux privilege settings) is no longer shipped as separate binary package of util-linux but part of the util-linux binary package itself nowadays
- su (change user ID or become superuser) was moved from login package (kudos to Andreas Henriksson for this!)
Deprecated / removed tools
Tools that are no longer shipped with util-linux as of Debian/buster:
- line binary (copies one line (up to a newline) from standard input to standard output), the head binary is its suggested replacement
- pg binary (browse pagewise through text files), it’s marked deprecated in POSIX since 1997
- tailf binary (follow the growth of a log file), it was deprecated in 2017 and `tail -f` from coreutils works fine
- tunelp binary (set various parameters for the lp device), parallel port printers are suspected to be extinct by now
New tools
blkzone (run zone command on a device):
Usage: blkzone <command> [options] <device> Run zone command on the given block device. Commands: report Report zone information about the given device reset Reset a range of zones. Options: -o, --offset <sector> start sector of zone to act (in 512-byte sectors) -l, --length <sectors> maximum sectors to act (in 512-byte sectors) -c, --count <number> maximum number of zones -v, --verbose display more details -h, --help display this help -V, --version display version For more details see blkzone(8).
chmem (configure memory, set a particular size or range of memory online or offline):
Usage: chmem [options] [SIZE|RANGE|BLOCKRANGE] Set a particular size or range of memory online or offline. Options: -e, --enable enable memory -d, --disable disable memory -b, --blocks use memory blocks -z, --zone <name> select memory zone (see below) -v, --verbose verbose output -h, --help display this help -V, --version display version Supported zones: DMA DMA32 Normal Highmem Movable Device For more details see chmem(8).
choom (display and adjust OOM-killer score):
Usage: choom [options] -p pid choom [options] -n number -p pid choom [options] -n number command [args...]] Display and adjust OOM-killer score. Options: -n, --adjust <num> specify the adjust score value -p, --pid <num> process ID -h, --help display this help -V, --version display version For more details see choom(1).
fincore (count pages of file contents in core):
Usage: fincore [options] file... Options: -J, --json use JSON output format -b, --bytes print sizes in bytes rather than in human readable format -n, --noheadings don't print headings -o, --output <list> output columns -r, --raw use raw output format -h, --help display this help -V, --version display version Available output columns: PAGES file data resident in memory in pages SIZE size of the file FILE file name RES file data resident in memory in bytes For more details see fincore(1).
lsmem (list the ranges of available memory with their online status):
Usage: lsmem [options] List the ranges of available memory with their online status. Options: -J, --json use JSON output format -P, --pairs use key="value" output format -a, --all list each individual memory block -b, --bytes print SIZE in bytes rather than in human readable format -n, --noheadings don't print headings -o, --output <list> output columns --output-all output all columns -r, --raw use raw output format -S, --split <list> split ranges by specified columns -s, --sysroot <dir> use the specified directory as system root --summary[=when] print summary information (never,always or only) -h, --help display this help -V, --version display version Available output columns: RANGE start and end address of the memory range SIZE size of the memory range STATE online status of the memory range REMOVABLE memory is removable BLOCK memory block number or blocks range NODE numa node of memory ZONES valid zones for the memory range For more details see lsmem(1).
New features/options
agetty + getty (alternative Linux getty):
--list-speeds display supported baud rates
blkid (locate/print block device attributes) gained a bunch of long options:
Options: --cache-file same as -c --no-encoding same as -d --garbage-collect same as -g --output same as -o --list-filesystems same as -k --match-tag same as -s --match-token same as -t --list-one same as -l --label same as -L --uuid same as -U Low-level probing options: --probe same as -p --info same as -i --size same as -S --offset same as -O --usages same as -u --match-types same as -n
dmesg (print or control the kernel ring buffer):
-p, --force-prefix force timestamp output on each line of multi-line messages
fallocate (preallocate or deallocate space to a file):
-i, --insert-range insert a hole at range, shifting existing data -x, --posix use posix_fallocate(3) instead of fallocate(2)
findmnt (find a filesystem):
--output-all output all available columns --pseudo print only pseudo-filesystems --real print only real filesystems --tree enable tree format output is possible
fstrim (discard unused blocks on a mounted filesystem):
-A, --fstab trim all supported mounted filesystems from /etc/fstab -n, --dry-run does everything, but trim
hwlock (read or set the hardware clock (RTC)):
-l same as --localtime --delay <sec> delay used when set new RTC time -v, --verbose display more details
lsblk (list block devices):
Options: -z, --zoned print zone model -T, --tree use tree format output --sysroot >dir< use specified directory as system root Available output columns: PATH path to the device node FSAVAIL filesystem size available FSSIZE filesystem size FSUSED filesystem size used FSUSE% filesystem use percentage PTUUID partition table identifier (usually UUID) PTTYPE partition table type ZONED zone model
lscpu (display information about the CPU architecture):
-J, --json use JSON for default or extended format
lslocks (list local system locks):
Options: -b, --bytes print SIZE in bytes rather than in human readable format --output-all output all columns Available output columns: TYPE kind of lock
lslogins (display information about known users in the system):
Options: --output-all output all columns Available output columns: PWD-METHOD password encryption method
lsns (list namespaces):
Options: --output-all output all columns -W, --nowrap don't use multi-line representation Available output columns: NETNSID namespace ID as used by network subsystem NSFS nsfs mountpoint (usually used network subsystem)
nsenter (run program with namespaces of other processes):
-a, --all enter all namespaces
--output-all output all columns -S, --sector-size <num> overwrite sector size --list-types list supported partition types and exit
rename.ul (rename files):
-n, --no-act do not make any changes -o, --no-overwrite don't overwrite existing files -i, --interactive prompt before overwrite
runuser (run a command with substitute user and group ID):
-w, --whitelist-environment <list> don't reset specified variables -P, --pty create a new pseudo-terminal
setsid (run a program in a new session):
-f, --fork always fork
setterm (set terminal attributes):
--resize reset terminal rows and columns
unshare (run program with some namespaces unshared from parent):
--kill-child[=<signame>] when dying, kill the forked child (implies --fork), defaults to SIGKILL
wipefs (wipe a signature from a device):
Options: -i, --noheadings don't print headings -J, --json use JSON output format -O, --output <list> COLUMNS to display (see below) Available output columns: UUID partition/filesystem UUID LABEL filesystem LABEL LENGTH magic string length TYPE superblok type OFFSET magic string offset USAGE type description DEVICE block device name
zramctl (set up and control zram devices):
-a, --algorithm lzo|lz4|lz4hc|deflate|842 compression algorithm to use (new compression algorithms lz4hc, deflate + 842) --output-all output all columns
Deprecated and removed options
hwlock (read or set the hardware clock (RTC)):
--badyear ignore RTC's year because the BIOS is broken -c, --compare periodically compare the system clock with the CMOS clock --getepoch print out the kernel's hardware clock epoch value --setepoch set the kernel's hardware clock epoch value to the value given with --epoch
unshare (run program with some namespaces unshared from parent):
-s (use --setgroups instead)
July 26th, 2019 at 23:33
Any thoughts or plans regarding the “pidof” utility, currently in sysvinit-utils? It’s the only reason that package remains essential, and it would be nice to no longer need that package installed on systems not running sysvinit. (That package also ships killall5, but previous surveys of Debian code have confirmed that that doesn’t need to be essential.)
July 26th, 2019 at 23:39
@Anonymous: that’s a good point, would be nice to get `pidof` into util-linux as well, not sure though if someone finds time and motivation to take care