Introduction
ps aux is ubiquitous but its columns, flags, and BSD/SysV dialects are a minefield. procs offers a single, consistent, colorized view of running processes with sensible defaults: human-readable CPU/RAM, hostname resolution for TCP sockets, Docker container mapping, and a keyword filter that actually works.
What procs Does
- Lists processes with default columns: PID, user, RSS/VSZ, CPU, command.
- Filters by keyword, user, or PID range.
- Shows tree view with
--tree. - Inserts optional columns for TCP/UDP ports, Docker container, cgroup, ctxsw.
- Works on Linux, macOS, Windows.
Architecture Overview
procs reads /proc on Linux, sysctl on macOS, and the Windows management APIs. Columns are declarative via ~/.config/procs/config.toml, and the rendering pipeline tokenizes, sorts, and paints with termcolor. A single Rust binary means no Python/Perl runtime required.
Self-Hosting & Configuration
- Install via brew, cargo, apt, dnf, scoop, winget.
~/.config/procs/config.tomlcustomizes columns, colors, themes.- Pager integration via
PAGER=lessor built-in--pager. - JSON output for dashboards:
procs --json. - Works inside containers if
/procis mounted.
Key Features
- Multi-OS (Linux, macOS, Windows) with consistent UX.
- Rich filters and sorting.
- Optional TCP/UDP port, Docker, cgroup columns.
- Tree view for parent/child exploration.
- Pager, watch mode (
--watch), JSON export.
Comparison with Similar Tools
- ps — POSIX classic; cryptic flags.
- htop — interactive TUI with CPU bars; heavier.
- btop — even fancier TUI; same interactive niche.
- pgrep/pkill — purpose-built; procs covers both plus display.
- glances — Python monitor; slower startup.
FAQ
Q: Can it show Docker containers?
A: Yes — --insert docker adds the container column.
Q: Does it work in restricted containers?
A: Requires /proc access; privileged containers or hostPID=true.
Q: Watch mode rate?
A: --watch-interval 1 seconds.
Q: Windows support? A: Yes — columns adapt to NT APIs.