Zenith
用 Rust 编写的终端图形化指标显示工具,适用于 *nix 系统
特性
- 可选的 CPU、内存、网络和磁盘使用率图表
- 快速查看磁盘剩余空间、网卡 IP 地址、CPU 频率
- 突出显示 CPU、内存和磁盘的主要使用者
- 电池百分比、充放电时间、功耗
- 类似 top 的可过滤进程表,包括每个进程的磁盘使用情况
- 更改进程优先级
- 可缩放的图表视图(支持回溯历史数据)
- 使用信号管理进程
- 在运行之间保存性能数据
- NVIDIA GPU 使用率指标(使用
--features nvidia
),包括每个进程的 GPU 使用情况 - 磁盘剩余空间图表
- 延迟统计(在 Linux 上以 root 权限运行 Zenith 时)
计划功能
- CPU 窃取百分比和通用虚拟化感知
- 传感器温度图表
- 每个进程的网络使用情况(Linux)
- 关于系统不良事件的消息提示,如内核环形缓冲区中的错误(Linux)
- Docker 支持
- ZFS(池状态)
- AMD GPU 使用率指标
- 磁盘指标,如 IO 操作/延迟
- 支持内存压力
当前支持的平台
- Linux
- MacOS
计划支持的平台
- BSD(OpenBSD/FreeBSD)
- 可能会支持 Redox OS
安装
二进制文件
下载编译好的发行版。
基于 Debian/Ubuntu 的 Linux 发行版(64 位)
最新的 64 位 deb 包可在这里获取,需要基于 Debian >= 9 或 Ubuntu >= 16.04 的发行版
你也可以使用 deb-get 安装和更新我们在 GitHub 发布页面上发布的 .deb 包。
首先在终端中使用以下命令安装 deb-get
:
sudo apt install curl
curl -sL https://raw.githubusercontent.com/wimpysworld/deb-get/main/deb-get | sudo -E bash -s install deb-get
然后在终端中使用以下命令安装 zenith:
deb-get install zenith
安装 zenith 后,可以使用以下命令保持更新:
deb-get update
deb-get upgrade
Arch Linux
zenith 可在 extra 仓库中获得,可以使用 pacman 安装:
pacman -S zenith
AUR 中也有可用的包:zenith-git 和 zenith-bin
zenith-bin 包使用前面提到的 deb 包,可以避免从源代码构建。前两个依赖于 rust/cargo,建议从 AUR 安装 rustup 包,而不是从官方仓库安装 rust 包。这样可以按照 rust 官方文档轻松安装 rust 组件。你需要使用 rustup 单独安装工具链,所以使用类似以下的命令:
yay -S rustup
rustup toolchain install stable
rustup default stable
如果你有特定偏好,可以将上面的 'stable' 工具链更改为 beta/nightly/...。之后安装首选的 AUR 包:yay -S zenith-git
(将跟踪最新的 git 修订版)
Homebrew
brew install zenith
Cargo
cargo install --git https://github.com/bvaisvil/zenith.git
对于 NVIDIA GPU 支持,请使用 nvidia
特性安装:
cargo install --features nvidia --git https://github.com/bvaisvil/zenith.git
构建
先决条件
构建需要 rust 版本 >= 1.40 和 libclang 开发包。
Rust:
从你喜欢的包管理器安装,或最好使用 rustup.rs
Clang 开发包:
- Ubuntu/Debian:
sudo apt-get install libclang-dev
- CentOS/RHL/Fedora
sudo [yum/dnf] install clang
Zenith 可在 rustc 版本 >= 1.40.0 下构建。
cd zenith
cargo build --release
对于 NVIDIA GPU 支持,使用 nvidia
特性构建:
cargo build --release --features nvidia
支持的最低 NVIDIA 驱动程序版本是 418.56
还有一个 Makefile,可以检测当前系统上是否存在 NVIDIA 驱动程序,并在 Linux 上构建适当的版本。
make && sudo make install
如果由于某些原因 Makefile 错误检测到 NVIDIA 驱动程序安装,或者安装损坏(例如存在 libnvidia-ml.so.1 但没有 libnvidia-ml.so),则可以使用 base
目标显式跳过:
make base && sudo make install
默认安装路径是 /usr/local
,因此上面的 make install
需要 root 权限。要安装到自定义位置,请使用 PREFIX,如下所示:
make && make install PREFIX=$HOME/zenith
Makefile 中还有一个 'all' 目标,如果检测到 NVIDIA 驱动程序,它将在 Linux 上构建两种版本,然后 'make install' 将复制一个 'zenith' 包装脚本,在运行时选择适当的二进制文件。
静态构建
Makefile 提供了在 Linux 上针对 musl C 库进行完全静态版本构建的功能。这需要在系统上安装 musl-gcc。在 debian/ubuntu 衍生版上安装 "musl-tools" 包,在 fedora 上安装 "musl-gcc",在其他发行版上从其标准仓库安装等效包。
使用目标 "linux-static" 来构建它。这将创建一个包含可执行文件的 tarball,并附带一个包含 sha256 校验和的文件。
NVIDIA 驱动程序通常不提供库的静态版本,因此静态构建会跳过该配置。但是,如果你somehow能获得 NVIDIA 库的静态版本,或者可以接受该可执行文件的动态链接,那么你可以显式设置 BUILD_NVIDIA 标志为 true:
make linux-static BUILD_NVIDIA=true
在虚拟环境中构建 NVIDIA 支持
如果需要在虚拟环境中构建 NVIDIA 支持,则需要更多设置,因为通常 VM 软件无法直接暴露 NVIDIA GPU。 与运行时 zenith 脚本不同,Makefile 已设置为仅检测所需 NVIDIA 库的存在,因此即使没有 NVIDIA GPU,也可以构建 NVIDIA 支持。
按照发行版推荐的方式安装 nvidia 驱动包。例如,在 Ubuntu < 18.04 中添加 NVIDIA PPA (https://launchpad.net/~graphics-drivers/+archive/ubuntu/ppa) 并安装 nvidia-430 包。对于较新版本,安装 nvidia-driver-440/450 包。 之后使用"sudo prime-select intel"禁用实际驱动程序的使用。然后在使用Makefile构建时,您需要显式地将NVIDIA库路径添加到LD_LIBRARY_PATH中。 例如,在Ubuntu及其衍生版上,可以这样做:
export LD_LIBRARY_PATH=/usr/lib/nvidia-430
make && sudo make install
构建deb软件包
源代码树中包含Debian软件包支持。安装devscripts软件包,并使用标准选项如"debuild -b -uc -us"在上一级目录中构建一个未签名的deb软件包。 在虚拟环境构建中,可以像这样显式设置LD_LIBRARY_PATH:
debuild -eLD_LIBRARY_PATH=/usr/lib/nvidia-430 -b -uc -us
可以从软件仓库或通过标准的rustup方式安装Cargo。如果需要在虚拟环境中进行更多操作,通常建议使用后者。在这种情况下,$HOME/.cargo/bin应该在PATH中,并标记PATH以使debuild不会对其进行清理:
debuild -ePATH -eLD_LIBRARY_PATH=/usr/lib/nvidia-430 -b -uc -us
使用"./debian/rules clean"而不是"make clean"来清理,这样可以同时清除debian构建文件。
使用方法
不带参数运行时,zenith会以默认的2000毫秒(2秒)刷新率启动,显示CPU、磁盘和网络的默认可视化。这些可以通过命令行参数进行更改:
用法:
zenith [标志] [选项]
标志:
--disable-history 存在此标志时禁用历史记录
-h, --help 打印帮助信息
-V, --version 打印版本信息
选项:
-c, --cpu-height <INT> CPU/内存可视化的最小百分比高度。[默认值:17]
--db <STRING> 要使用的数据库(如果有)。[默认值:~/.zenith]
-d, --disk-height <INT> 磁盘可视化的最小百分比高度。[默认值:17]
-n, --net-height <INT> 网络可视化的最小百分比高度。[默认值:17]
-p, --process-height <INT> 进程表的最小百分比高度。[默认值:32]
-r, --refresh-rate <INT> 刷新率(毫秒)。[默认值:2000]
-g, --graphics-height <INT> 显卡可视化的最小百分比高度。[默认值:17]
graphics-height选项仅在启用NVIDIA GPU支持时适用。
不想要某个部分?将其高度设置为0即可删除。
例如:zenith -c 0
会删除CPU图表。
上/下箭头键在进程表中移动。回车键将聚焦于一个进程。 Tab键切换活动部分。活动部分可以展开(e)和最小化(m)。 +/-(或=/-)将放大/缩小所有图表。箭头键(←/→)在时间上前进/后退。 反引号(`)将图表重置为当前时间和最大缩放。 使用这些选项,您可以创建您想要的布局。
在zenith中,'h'键将显示此帮助: