只读运行且无需 sudo,但可用的测量项取决于平台与权限;GPU 等部分指标仅在支持的平台上可用;录制长会话需写入磁盘并按 --keep 轮转清理。
syswatch
matthart1983MIT活跃维护在终端里查看 macOS 和 Linux 的系统诊断信息,实时追踪资源占用并回溯近期活动,适合排查性能问题。
System diagnostics in your terminal. Investigate resource use and revisit recent activity on macOS and Linux.
brew install syswatch
syswatchREADME 未说明具体硬件要求;仅支持 macOS 与 Linux,预编译二进制覆盖 x86_64、aarch64,另有面向老 NAS 的 armv5te 与静态 Linux 构建。
终端里的系统诊断工具,实时查看 CPU、内存、磁盘、进程等资源占用并回溯近期活动
在终端里查看 macOS 和 Linux 的系统诊断信息,实时追踪资源占用并回溯近期活动,适合排查性能问题。
核心能力
- 十二个标签页覆盖 CPU、内存、磁盘、进程、GPU、电源、网络与服务
- 支持历史回刷,默认保留 120 个采样点供回溯
- 可录制会话、保存快照并回放,支持 diff 对比两次录制
- 用启发式异常卡片定位资源尖峰并推荐排查标签页
- 提供 Lite 80×24 与 Dense 130×44 两种紧凑视图
容易踩的坑
- v0.14.5最新正式版2026-11-03 · 2026-11-03 10:01 UTC
Security
- Recordings from
Rand--record,Ssnapshots and the config are now created readable only by your user, with files at 0600 and directories at 0700. Recordings and snapshots contain every visible process's full command line, and earlier versions created them under your umask, which usually let other users read them. syswatch narrows itssessions,ringandsnapshotsdirectories to 0700 the next time it writes to each one. To protect files an earlier version wrote right away, runchmod -R go= ~/.local/share/syswatchon Linux orchmod -R go= ~/Library/Application\ Support/syswatchon macOS, and check any copies you keep elsewhere. Salways creates a new snapshot file and never opens an existing entry at the same name. The config is saved through a temporary file and a rename.- Startup no longer reads other processes' environment variables. A full
sysinfo refresh at startup read
/proc/<pid>/environfor every readable process and kept the values in memory, though syswatch never showed them. - zstd's decoders for pre-1.0 formats are no longer built into syswatch. No version of syswatch wrote those formats.
Changed
- The minimum supported Rust is now 1.89.
Cargo.tomldeclares it, and CI builds on it. - Updated dependencies, which clears the published advisories against anyhow, tokio, zstd, zstd-safe and zstd-sys. Removed tokio, which nothing used.
- The published crate leaves out the demo GIFs. It is 259 KB, down from 6.1 MB.
Fixed
- The Homebrew tap formula's test expected
syswatch --helpto exit 1. It exits 0. - Dense no longer crashes in a terminal 3 to 8 rows tall, or on a key press in one, which used to leave the terminal in raw mode (#39).
--recordnow flushes its current chunk and exits cleanly on SIGTERM (systemctl stop) and SIGHUP, not only on Ctrl-C, and still ignores SIGHUP undernohup(#41).
Release process
- A release now stops before it builds anything unless its tag matches
Cargo.toml, this file has a section for it, the commit is onmain, and CI's Linux, macOS, release-guard, cargo-deny and MSRV jobs passed on that commit. Windows CI still runs, but doesn't hold a release. scripts/release.sh X.Y.Z "summary"makes the release commit and its tag.- A failed release can run again against the same tag:
gh workflow run release.yml --ref main -f tag=vX.Y.Z. A version that is already on crates.io counts as published. - A tag with a hyphen, such as
v0.15.0-rc.1, makes a GitHub pre-release. It never goes to crates.io and never becomes the latest release. Only the newest release updates the Homebrew tap. - Releases carry
SHA256SUMS, and take their notes from this file. - Workflows are read-only by default, with every action pinned to a commit.
CI adds cargo-deny, an MSRV build and nextest, and Dependabot opens grouped
updates weekly. The Nix build has its own workflow and a
flake.lock.
- Recordings from
- v0.14.42026-10-17 · 2026-10-17 21:38 UTC
查看更新说明
What's Changed
- fix(power): detect battery when ioreg output has tree-drawing prefixes by @fucx in https://github.com/matthart1983/syswatch/pull/37
New Contributors
- @fucx made their first contribution in https://github.com/matthart1983/syswatch/pull/37
Full Changelog: https://github.com/matthart1983/syswatch/compare/v0.14.3...v0.14.4
- v0.14.32026-10-10 · 2026-10-10 23:15 UTC
查看更新说明
- v0.14.22026-09-14 · 2026-09-14 09:14 UTC
查看更新说明
What's Changed
- Add armv5te release build for Marvell Kirkwood NAS boxes (Iomega ix2-dl) by @baracudaz in https://github.com/matthart1983/syswatch/pull/34
New Contributors
- @baracudaz made their first contribution in https://github.com/matthart1983/syswatch/pull/34
Full Changelog: https://github.com/matthart1983/syswatch/compare/v0.14.1...v0.14.2
- v0.14.12026-09-12 · 2026-09-12 02:07 UTC
查看更新说明
What's Changed
- Reposition README: memory and correlation, not Dense-view chrome by @matthart1983 in https://github.com/matthart1983/syswatch/pull/32
- fix(insights): report a real elapsed window in the live TUI by @matthart1983 in https://github.com/matthart1983/syswatch/pull/33
Full Changelog: https://github.com/matthart1983/syswatch/compare/v0.14.0...v0.14.1
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
Monitor CPU, memory, disks, processes, GPU, power and network activity on macOS and Linux. Scrub recent history, record sessions, and investigate spikes with heuristic anomaly cards. SysWatch is read-only and runs without sudo; available measurements depend on your platform and permissions.
Install
brew install syswatch # macOS / Linux
nix-shell -p syswatch # NixOS / Nix
paru -S syswatch # Arch (AUR)
cargo install syswatch # build from source with Rust
Prebuilt binaries are available for macOS and Linux (x86_64 and aarch64), with static Linux builds and an armv5te build for older NAS hardware. Build from source.
Run
syswatch # twelve tabs, default 1 Hz refresh
syswatch --lite # one 80×24 screen
syswatch --dense # all main subsystems, designed for 130×44
syswatch --tab procs # start on Processes
1–9, 0, - and + switch tabs. V cycles views, ? shows help, q quits.
Use ← / → to scrub recent history and End to return live.
Every keybinding · Full-view demo
The tabs
| Key | Tab | Shows |
|---|---|---|
| 1 | Overview | Activity across subsystems |
| 2 | CPU | CPU usage, load and per-core activity |
| 3 | Memory | Memory use, swap and pressure |
| 4 | Disks | Disk read/write activity |
| 5 | Filesystems | Capacity, inode use and mounts |
| 6 | Procs | Processes, resource use, sorting and filtering |
| 7 | GPU | Utilisation and memory, where available |
| 8 | Power | Battery and available power measurements |
| 9 | Services | systemd or launchd services |
| 0 | Net | Network traffic |
| - | Timeline | Session events and history scrubbing |
| + | Insights | Anomalies and suggested tabs to investigate |
Views
| View | Size | For |
|---|---|---|
| Full | Tabbed | Exploring individual subsystems |
Lite (--lite) | 80×24 | SSH sessions and small terminals |
Dense (--dense) | Designed for 130×44 | CPU, memory, network, cores, disk and processes together |
In Dense, 1–6 zoom a panel and Esc restores the grid.
View details · Lite demo
Record and report
Press R to record an interactive session or S to save a snapshot.
syswatch --record --keep 24h # foreground recording without a TUI
syswatch --replay session.swr # replay a recording
syswatch snapshot --json # one live sample
syswatch why # sample for 30s, explain detected anomalies
syswatch diff before.swr after.swr # compare recordings
Live scrubbing holds 120 samples (two minutes at the default refresh rate).
Record longer sessions to disk. Headless recording rotates files and prunes old
chunks according to --keep; it runs until stopped.
Recording and report details.
Docs
| Reference | Controls, views, recording and reports |
| Platform support | Sensors, permissions, NVIDIA support and ZFS |
| Architecture | Collectors, history, rendering and refresh model |
| Security | Security policy |
Related
NetWatch covers network diagnostics; DiskWatch covers disk activity. They share the terminal layout and palette.
Thanks
Community packagers maintain the Nix and Arch packages. Repology tracks package versions. File packaging issues with the packagers and SysWatch bugs here.
License
MIT