du(1) on Solnix vs Linux and the BSDs
On Solnix, du is the illumos du at /usr/bin/du. Its single-letter flags differ from Linux and the BSDs: -d means 'do not cross filesystems', not a depth limit, and there is no -c grand total. The default unit is 512-byte blocks, as on the BSDs, while Linux defaults to 1024 bytes.
The manual pages
- Solnix: du(1) from
pkgs.solnix.illumos-world-man· illumos.org - Linux: du(1) coreutils-full-9.11
- FreeBSD: du(1) 15.1-RELEASE
- OpenBSD: du(1) 8.0
- NetBSD: du(1) 11.0
- Standard: POSIX.1-2024 (IEEE Std 1003.1-2024),
du
What Solnix runs
/usr/bin/du is the illumos du. /usr/xpg4/bin/du has the same synopsis. It differs in that it acts as though -r is always given and reports an error if it cannot stat files or read directories, which affects the exit status. /usr/bin/du is silent about those conditions unless -r is given. /usr/ucb/du is also shipped, but the bundle does not describe it.
Differences
| Compared with | Topic | What differs |
|---|---|---|
| all four | -d meaning | Solnix -d takes no argument and means 'do not cross filesystem boundaries'. On Linux, FreeBSD, OpenBSD and NetBSD, -d (--max-depth on Linux) limits the depth of entries shown. Solnix has no depth option, only -s and -a.Source: Solnix du(1) SYNOPSIS and -d; Linux du(1) -d, --max-depth; FreeBSD du(1) -d depth; OpenBSD du(1) -d depth; NetBSD du(1) -d |
| all four | -c grand total | Solnix du has no -c. Linux, FreeBSD, OpenBSD and NetBSD use -c to print a grand total after all arguments.Source: Solnix du(1) SYNOPSIS and OPTIONS; Linux du(1) -c, --total; FreeBSD du(1) -c; OpenBSD du(1) -c; NetBSD du(1) -c |
| Linux | default block size | Solnix du reports 512-byte units, rounded up, by default. Linux reports 1024-byte units unless POSIXLY_CORRECT is set, which gives 512. Output from the same command line differs by a factor of two. Source: Solnix du(1) DESCRIPTION (default 512-byte units); Linux du(1) text after the option list (units default to 1024 bytes, or 512 if POSIXLY_CORRECT is set) |
| all four | BLOCKSIZE environment | The Solnix ENVIRONMENT section lists only LANG, LC_ALL, LC_CTYPE, LC_MESSAGES and NLSPATH. FreeBSD, OpenBSD and NetBSD honour BLOCKSIZE. Linux honours DU_BLOCK_SIZE, BLOCK_SIZE and BLOCKSIZE. The Solnix page does not say BLOCKSIZE has any effect. Source: Solnix du(1) ENVIRONMENT; FreeBSD/OpenBSD/NetBSD du(1) ENVIRONMENT; Linux du(1) DU_BLOCK_SIZE, BLOCK_SIZE, BLOCKSIZE |
| all four | -P and -l missing | Solnix du has -H and -L but no -P. Linux, FreeBSD, OpenBSD and NetBSD have -P (no symlinks followed). Solnix has no -l either. Linux and FreeBSD -l counts hard-linked files each time they are found, while Solnix counts a multiply-linked file once.Source: Solnix du(1) SYNOPSIS, NOTES; Linux du(1) -P, -l; FreeBSD du(1) -P, -l; OpenBSD du(1) -P; NetBSD du(1) -P |
| all four | -b bytes and option conflicts | Solnix -b reports bytes and implies -A. Combining -b with -h, -k or -m is an error on Solnix, while -h, -k and -m override each other. FreeBSD, OpenBSD and NetBSD have no -b. Linux -b is --apparent-size --block-size=1.Source: Solnix du(1) -b and the paragraph after -x; Linux du(1) -b, --bytes; FreeBSD/OpenBSD/NetBSD du(1) SYNOPSIS |
| OpenBSD, NetBSD | apparent size (-A) | Solnix, Linux and FreeBSD have -A, which tallies apparent size rather than allocated blocks. The OpenBSD and NetBSD synopses have no -A.Source: Solnix du(1) -A; Linux du(1) -A; FreeBSD du(1) -A; OpenBSD du(1) SYNOPSIS; NetBSD du(1) SYNOPSIS |
| all four | -o flag | Solnix -o leaves child directories out of a parent's total and does nothing with -s. Linux has -S (--separate-dirs) for a similar purpose. The FreeBSD, OpenBSD and NetBSD pages have no -o.Source: Solnix du(1) -o; Linux du(1) -S, --separate-dirs; FreeBSD/OpenBSD/NetBSD du(1) SYNOPSIS |
| FreeBSD, OpenBSD, NetBSD | -r and error reporting | /usr/bin/du on Solnix says nothing about unreadable files unless -r is given. FreeBSD, OpenBSD and NetBSD already report them by default; FreeBSD and OpenBSD document -r as accepted but ignored. /usr/xpg4/bin/du on Solnix always reports.Source: Solnix du(1) -r; FreeBSD du(1) -r, STANDARDS; OpenBSD du(1) -r, STANDARDS; NetBSD du(1) -r |
| FreeBSD, NetBSD | -g and -m units | Solnix has no -g for 1 GiB blocks. FreeBSD and NetBSD have -g. Solnix and NetBSD have -m for 1 MiB units, and Linux has -m. OpenBSD has neither -g nor -m.Source: Solnix du(1) SYNOPSIS, -m; FreeBSD du(1) -g, -m; NetBSD du(1) -g, -m; OpenBSD du(1) SYNOPSIS; Linux du(1) -m |
| Linux, FreeBSD, NetBSD | threshold, exclude and inode options | Solnix du has no size threshold, exclude or inode options. Linux and FreeBSD have -t threshold. FreeBSD has -I mask and Linux has --exclude and -X. Linux has --inodes and NetBSD has -i. Linux also has --files0-from, -0 and --time.Source: Linux du(1) -t, --exclude, -X, --inodes, --files0-from, -0, --time; FreeBSD du(1) -t, -I; NetBSD du(1) -i; Solnix du(1) SYNOPSIS |
| Linux, FreeBSD | human-readable variants | Solnix -h scales by 1024 and has no --si. Linux and FreeBSD have --si for powers of 1000. Linux and FreeBSD also have -B to set an arbitrary block size, which Solnix lacks.Source: Solnix du(1) -h; Linux du(1) --si, -B; FreeBSD du(1) --si, -B |
Standards
- POSIX: du is a POSIX.1-2024 utility.
- Solnix: INTERFACE STABILITY: the command line interface of du is Committed. The output of du is Committed.
- FreeBSD: The du utility is compliant with the IEEE Std 1003.1-2008 (“POSIX.1”) specification. The flags [
-ABIPcdghlmnt], [--libxo], [--si] and the BLOCKSIZE environment variable are extensions. - OpenBSD: The du utility is compliant with the IEEE Std 1003.1-2008 (“POSIX.1”) specification. The flags [
-cdhP] and the BLOCKSIZE environment variable are extensions.
Writing portable scripts
- Use only
-a,-s,-k,-xand-Hor-Lin portable scripts. Do not use-d,-c,-b,-o,-Por-m, because they differ or are missing between systems. - Do not assume a default unit. Pass
-kwhen you need 1024-byte blocks, since the default is 512 on Solnix and the BSDs and 1024 on Linux.
Every difference here is taken from the manual pages linked above: Solnix's published page, Linux (man-pages and the GNU and util-linux manuals), FreeBSD, OpenBSD and NetBSD. Each row names its source. Where a manual is silent, this page is too. Compiled 2026-10-26. Found a mistake? Mail hackers@lists.solnix.io.