macOS 系统监视器,仿 Windows 任务管理器风格。
- 进程管理:按应用分组、可展开、多列排序、搜索、结束进程
- 性能监控:CPU 总览 + 每核活跃度、内存(App / 已连接 / 已压缩细分 + 压力条)、交换
- GPU / 功耗:GPU 活跃度、CPU/GPU/ANE 功耗、E/P 集群频率与占用、热压力等级
- 网络监控:实时上传/下载速度、各网卡明细、TCP 连接状态分布
- 存储监控:磁盘读写速度、IOPS、各分区使用率
- 传感器 / 电池:电量与健康度(循环次数、容量)、系统功耗 / 热负载
- 后台常驻:最小化到系统托盘
- 历史持久化:SQLite 记录最近 1 小时,重启后自动恢复图表
注:温度 / 风扇转速 在 Apple Silicon 上
powermetrics并不提供,相应面板会显示「无数据」。 这类数据需走 IOReport / SMC,列入后续计划。
- 操作系统:macOS(仅限本平台)。在 Apple Silicon 上开发与测试;Intel Mac 上 CPU / 内存 / 网络 / 磁盘 / 进程等基础功能可用,GPU / 功耗等依赖
powermetrics的项目输出格式可能有差异。 - Python:3.11+
- 系统自带命令(无需额外安装):
powermetrics、vm_stat、ioreg、sysctl、osascript - Python 依赖:见
requirements.txt(PySide6 / psutil / pyobjc)
以上按代码实际用到的接口推断,未在多个 macOS 版本上做系统性测试,版本下限以实际运行为准。
pip install -r requirements.txtpython main.py需要 PyInstaller,仓库已附打包配置 SystemWatch.spec:
pip install pyinstaller
pyinstaller SystemWatch.spec产物为 dist/SystemWatch.app,双击运行,或拖入「应用程序」。database/schema.sql 已随 .spec 一并打包,无需手动复制。
- 首次打开被拦:当前
.app未做代码签名,Gatekeeper 可能提示「无法打开」。右键图标选「打开」,或到 系统设置 → 隐私与安全性 点「仍要打开」。 - 分发提醒:
.app内含 PySide6(LGPLv3),对外分发时请遵守 LGPL(见「许可证」)。
CPU、内存、网络、磁盘等数据无需任何特权。但 GPU 占用率、功耗、温度 依赖 macOS 的 powermetrics,它必须以 root 运行。
为避免每次启动弹密码框,首次进入「GPU / 功耗」或「传感器」标签页时可点击「立即授权」——它通过 macOS 原生管理员对话框写入一条 sudoers 规则:
<用户名> ALL=(ALL) NOPASSWD: /usr/bin/powermetrics
- 范围:仅
powermetrics一个命令免密,不影响任何其他sudo操作。 - 可选:不授权则 GPU/功耗/温度不可用,其余功能照常。
- 撤销:
sudo rm /etc/sudoers.d/systemwatch - 提醒:NOPASSWD 会扩大本地攻击面,多用户 / 高安全环境请自行权衡。后续版本计划改用非特权的 IOReport / SMC + 特权 helper,移除这条 sudoers 规则。
-
GPU 占用 / 功耗 / 集群频率是空的,或显示「不支持」? 需要先授权
powermetrics(见上一节)。授权后采集会自动重启,无需重开 App。 -
「温度传感器」「风扇转速」一直显示「无数据」? 平台限制,不是 bug。Apple Silicon 的
powermetrics不提供 SMC 温度 / 风扇读数,这类数据需走 IOReport / SMC,已列入后续计划。 -
看不到电池电量 / 健康度? 台式机(Mac mini / Studio / Pro / iMac)没有电池,相应面板显示「未检测到电池」属正常。
-
右键结束进程失败、提示没有权限? 系统进程或其他用户的进程需要更高权限;普通用户只能结束自己的进程。
-
关掉窗口后 App 没退出? 设计如此:关闭窗口会最小化到菜单栏托盘。要彻底退出,点托盘图标 →「退出」。
-
历史图表数据存在哪?怎么清空? SQLite 库位于
~/.systemwatch/history.db,仅保留最近约 1 小时。删除该文件即清空历史(下次启动会自动重建)。 -
怎么撤销 powermetrics 授权?
sudo rm /etc/sudoers.d/systemwatch
- Python 3.11+
- PySide6(Qt for Python,LGPLv3)
- psutil
- SQLite
本项目以 MIT 许可证 开源。
GUI 基于 PySide6(LGPLv3)。以二进制形式分发时请遵守 LGPL 要求:附带其许可证文本、保留动态库可被替换。
