Skip to main content

statblk

Gather disk and partition information for block devices and print it as a table or JSON.

Supports Linux and macOS.

Install

From PyPI:

pip install statblk

From a clone of this repository:

pip install .

Optional shell tab completion:

pip install 'statblk[completion]'

Requires Python 3.6+ and the multiCMD package (>= 1.47).

Quick start

statblk
statblk -j                    # JSON output (rows, header first)
statblk -J                    # JSON objects with numeric sizes/rates
statblk -o NAME,SIZE,MOUNTPOINT
statblk sda nvme              # filter rows matching sda or nvme
statblk 2                     # refresh every 2 seconds (watch mode)

Output columns

By default all columns are shown:

Column Description
NAME Block device name (device-mapper devices show their /dev/mapper name, e.g. pve-root)
FSTYPE Filesystem type
SIZE Device or filesystem size
FSUSE% Filesystem space used (mounted entries); TIMEOUT for a mount that didn't answer (e.g. dead NFS server)
MOUNTPOINT Mount path
SMART SMART health (OK, DENIED, TIMEOUT, etc.)
LABEL Volume label
UUID Filesystem UUID
MODEL Drive model (from udev via lsblk, sysfs fallback)
SERIAL Drive serial (from udev via lsblk, sysfs fallback)
DISCARD TRIM / discard support
READ Current read throughput
WRITE Current write throughput

Use -o / --output to select columns (comma-separated) or -x / --exclude to omit columns.

Options

Output format

Flag Description
-j, --json Print JSON instead of a table (list of rows, header first; values as displayed)
-J, --json_objects Print JSON as a list of objects: SIZE/READ/WRITE in bytes and FSUSE% as an integer (null when unavailable)
-b, --bytes Print sizes and throughput as raw byte counts
-H, --si Use powers of 1000 (SI) instead of 1024 for sizes
-R, --full Do not truncate long values to terminal width
-o, --output Columns to include (default: all)
-x, --exclude Columns to omit

Filtering

Flag Description
filter_patterns … Show rows matching any pattern (regex)
-D, --match_devname_only Apply patterns to device names only (kernel name or /dev/mapper name)
-v, --invert_match Invert pattern match (with no patterns, prints only the header)
-F, -fo, --formated_only Only entries with a filesystem type
-M, -mo, --mounted_only Only mounted devices
-B, -bo, --best_only Shortest mount point per device
-A, -ao, --active_only Only devices with read/write activity
-P, --pseudo Include pseudo filesystems (tmpfs, nfs, cifs, …)
--show_zero_size_devices Include zero-size devices

Runtime

Flag Description
-t, --timeout Time budget per refresh in seconds for lsblk, smartctl and statvfs (default: 2)
-w, --watch SECONDS Repeat output every SECONDS (watch mode)
--sudo Run external commands via sudo (needed for SMART on many systems). smartctl is also looked up in /usr/sbin, /sbin, /usr/local/sbin when it isn't on PATH
--debug Print suppressed exceptions to stderr
-V, --version Show version and exit

Watch mode

Prefer -w / --watch. A trailing integer positional still works the same as before:

statblk -w 5       # update every 5 seconds
statblk 5          # same (trailing integer)
statblk sda 3      # filter to sda, refresh every 3 seconds
statblk -w 3 sda   # same with explicit flag (flag wins if both are given)

After the first refresh, --active_only is enabled automatically on Linux so only busy devices are shown (not on macOS, where throughput isn't available). Each refresh re-reads mounts, labels, UUIDs, sizes, and per-drive sysfs info such as model/serial, so hot-swapped drives show up correctly (throughput iterators stay live across refreshes). Press Ctrl-C to stop (exit status 130).

If a filter pattern looks like a number, append 0 so it is not treated as the refresh interval (or use -w and keep the number as a filter):

statblk nvme0 0    # match nvme0, single run (no watch)
statblk -w 0 nvme0 # same via flag

Platform notes

Linux

Uses sysfs, /proc/self/mountinfo, lsblk, and optionally smartctl.

  • SMART requires smartctl (smartmontools). Use --sudo if permission is denied. It only runs against hardware-backed disks (not loop, dm, md, zram, nbd). Use --debug to see why the column is empty.
  • autofs trigger mounts are ignored (stat-ing them would trigger the automount); the real filesystem appears once mounted.
  • READ / WRITE throughput comes from /sys/class/block/*/stat (always 512-byte sector units).
  • On a single-shot run (and the first row of watch mode), READ/WRITE are a lifetime busy-time average (bytes / time spent in I/O since boot). In watch mode, later refreshes are interval rates over the sleep period (Δbytes / wall clock).

macOS

Uses diskutil and mount. Throughput columns are always zero (no per-device sysfs stats). APFS snapshot nodes such as the sealed system volume (disk3s1s1 on /) are listed.

Development

Install test deps:

pip install -r requirements-dev.txt

Run unit tests (default; live excluded) and embedded doctests:

pytest
python -m doctest statblk.py -v
python statblk.py --doctest

Optional live checks:

pytest -m live          # soft smoke on this host
pytest -m live_strict   # compare FSUSE% and names to df/lsblk

License

GPLv3+ — Yufei Pan (pan@zopyr.us)

Project home: github.com/yufei-pan/statblk

Metadata

Release files for statblk 1.43

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for statblk 1.43
File Size Uploaded Provenance Actions
statblk-1.43.tar.gz 35.1 kB Without provenance Details for statblk-1.43.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for statblk 1.43
File Interpreter ABI Platform Actions
statblk-1.43-py3-none-any.whl Python 3 none any Details for statblk-1.43-py3-none-any.whl

Total release size: 60.8 kB

Release files / statblk-1.43.tar.gz

Download URL statblk-1.43.tar.gz
Size 35.1 kB
Tags Source
SHA-256 checksum
How to use checksums
2adc10d1cb52121dff93d0fa9192cb4e0831753fcac4ec0958befc61c9d82107
BLAKE2b-256 checksum
How to use checksums
5fd65c811a6137f7b692cdbaca8ec84017e620dcb2bda97f3ddabbde6a58664c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / statblk-1.43-py3-none-any.whl

Download URL statblk-1.43-py3-none-any.whl
Size 25.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8d044b09f82238a4205109be1631fba8ad9c1225a73bba0a0be734286d839e4e
BLAKE2b-256 checksum
How to use checksums
48498dcca2b6c66075cf98d1e9632676c895a3e06e4f2dd32ee321136069883e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Security for statblk 1.43

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

1.43 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page