sysinfo-cli 文档

项目介绍

sysinfo-cli 是一个 Bash 写的 Linux 服务器状态面板。SSH 登录后能先看一眼 CPU、内存、磁盘和网络;需要盯实时变化时,再运行 sysinfo。它不跑后台进程,适合个人 VPS、家用服务器和小团队机器。支持 Debian、Ubuntu、RHEL、Fedora、Alpine、Arch、openSUSE 等发行版,不支持 macOS。

🔐

登录状态栏

bash 和 zsh 登录后显示一次状态快照

📊

实时监控

运行 sysinfo 查看实时刷新面板

📈

流量统计

按月累计流量,达到阈值后可自动限速

🔔

手机推送

通过 Bark 接收 CPU、流量、磁盘等告警

适合谁用? 适合个人 VPS、家用服务器和小团队运维。只要是 Linux 机器,又希望登录时先看一眼状态,就能用。

安装

选一种安装方式即可。脚本会识别包管理器,安装 yq、iproute/iproute2,并配置 SSH 登录状态栏。

系统要求

项目说明
操作系统Linux(bash);不支持 macOS
发行版Debian、Ubuntu、RHEL、CentOS、Rocky、Alma、Fedora、Alpine、Arch、openSUSE、Gentoo 等
包管理器apt、dnf、yum、apk、pacman、zypper、emerge(自动检测)
tc / ipiproute2(Debian/Alpine/Arch)或 iproute(RHEL/Fedora)
yqmikefarah 版,按 CPU 架构下载(amd64 / arm64 / arm)
权限安装与限速需要 root 或 sudo
Alpine 提示 Alpine 默认 shell 是 ash。先装 bash:apk add bash。安装脚本会用 apk 安装 iproute2。

一键安装

bash <(curl -sSL baixiaosheng.de/sysinfo)

从 GitHub 安装

curl -sSL https://raw.githubusercontent.com/baixiaoshengofficial/sysinfo-cli/main/install.sh | bash

克隆后安装

git clone https://github.com/baixiaoshengofficial/sysinfo-cli.git
cd sysinfo-cli
sudo ./install.sh

安装参数

参数说明
--lang zh|en指定界面语言,不写则按系统语言自动判断
--overwrite-config用默认模板覆盖已有配置(旧配置会自动备份)
--uninstall卸载 sysinfo-cli
小提示 再次执行 install.sh 会保留现有 config.yaml。只有加 --overwrite-config 才会重置,并且会先备份旧文件。

升级与卸载

升级

cd sysinfo-cli && git pull && sudo ./install.sh

如果想顺便把配置恢复成模板:

sudo ./install.sh --overwrite-config

卸载

sudo ./uninstall.sh

会删除脚本、配置文件、状态文件和 zsh 登录 hook。

常用命令

命令做什么
sysinfo打开实时面板(默认 1 秒刷新)
sysinfo 2每 2 秒刷新一次
sysinfo -r重新加载 /etc/sysinfo/config.yaml
sysinfo -c 文件.yaml从指定配置文件应用设置
sysinfo --reset-traffic清零本月流量统计
sysinfo --clear-nat清除 NAT 端口映射
sysinfo --notify-test发一条测试推送,确认 Bark 通道可用
sysinfo --notify-check检查告警规则(适合放 cron 定时跑)
注意 配置只从 YAML 文件读取,通过 -c 或 -r 应用。旧的 --nat、--traffic 等参数已经移除。

面板说明

登录后或运行 sysinfo 时,面板会显示四块信息:

================================================================
  系统信息面板 - 2026-06-29 17:49:12
================================================================
核心信息
  CPU      : Intel(R) Core(TM) i5-9600 @ 3.10GHz (6 core(s))
  IPv4     : 10.103.241.153
  运行时间 : 1 week, 4 days, 4 hours
资源使用
  负载     : 71.3%                             进程数   : 3725
  内存     : 19Gi / 31Gi (62%)
网络
  下载     : 55.5 KB/s                         上传     : 0 KB/s
  使用率   : [██████████] 48%
  限速状态 : 未限速
磁盘
  /                      162G      90G      59% [██████████]
================================================================
区域内容
核心信息CPU 型号、IP 地址、NAT 映射、运行时间
资源使用CPU 负载、内存、交换分区、进程数、在线用户
网络实时网速、本月流量、配额使用率、限速状态
磁盘各挂载点的容量、已用、占比和进度条

进度条:白色方块表示已用,灰色方块表示剩余。

配置文件

配置文件是 /etc/sysinfo/config.yaml。改完后执行 sudo sysinfo -r

完整示例

network:
  interface: ""                    # 留空自动检测网卡
  force_gateway_throttle: false    # 网关模式下是否强制限速

nat:
  enabled: false
  mappings:
    - "8080:80"                    # 公网端口:内网端口
    - "9000:3000"

traffic:
  enabled: true
  limit: "1T"                      # 1T / 500G / 100M / UNLIMITED / 0
  reset_day: 1                     # 每月几号重置流量
  mode: "both"                     # upload / download / both

throttle:
  enabled: true
  threshold: 95                    # 用到 95% 开始限速
  rate: "10mbps"                   # 限速到 10 Mbps

display:
  language: "auto"                 # auto / zh / en
  refresh_interval: 1
  show_traffic: true
  show_nat: true
  show_throttle: true

notify:
  enabled: false
  bark:
    url: "https://api.day.app"
    key: ""
  cooldown: 1800
  rules:
    cpu:      { enabled: false, threshold: 90 }
    net:      { enabled: false, threshold: 90 }
    nic:      { enabled: false, threshold: 80, mode: both, upload_rate: 0, download_rate: 0 }
    throttle: { enabled: false }
    disk:     { enabled: false, threshold: 90, paths: [] }
关于 NAT NAT 配置只用于显示端口映射,不会修改 iptables 或 nftables。

流量统计与限速

流量怎么统计

  • 从 /proc/net/dev 读取网卡收发字节数,按月累计
  • 数据写入 /etc/sysinfo-traffic.json,到 reset_day 自动重置
  • mode 可设为 upload、download 或 both

自动限速怎么工作

当本月流量达到 threshold 后,sysinfo-cli 会调用 Linux tc,把网速限制到 rate。

流量达到 95%
tc 限速到 10 Mbps
面板显示「限速中」
网关模式 如果服务器开启了 IP 转发(作为路由/网关),默认跳过限速,避免影响下游设备。确实要限速时,设置 force_gateway_throttle: true。

排查限速问题

bash scripts/test_throttle.sh

推送通知

告警通过 Bark 推到 iPhone。默认关闭,需要在 config.yaml 里手动开启。

怎么开启

  1. 在 iPhone 上安装 Bark App,拿到推送 Key
  2. 编辑 config.yaml,填上 bark.key,把 notify.enabled 改成 true
  3. 开启需要的规则,比如 cpu.enabled: true
  4. 执行 sudo sysinfo -r 应用配置
  5. 运行 sysinfo --notify-test,确认手机能收到

告警规则

规则什么时候推送
cpuCPU 使用率超过阈值
net本月流量达到配额阈值
nic网速达到带宽阈值,可分别监控上传/下载
throttle限速开始生效
disk某个磁盘分区使用率超过阈值
不会刷屏 告警只在状态变化时推送。同一条规则有 cooldown 冷却时间,默认 30 分钟。

定时检查(cron)

# 每 5 分钟检查一次告警规则
*/5 * * * * /usr/local/bin/sysinfo --notify-check

切换语言

在 config.yaml 里改 display.language:

display:
  language: "zh"    # auto / zh / en
  • auto跟随系统语言
  • zh中文界面
  • en英文界面

改完后运行 sysinfo 会立即使用新语言;执行 sudo sysinfo -r 后,SSH 登录状态栏也会切换。

文件路径

路径用途
/usr/local/bin/sysinfo命令入口
/etc/sysinfo/config.yaml主配置文件
/etc/sysinfo-traffic.json流量计数和限速状态
/etc/sysinfo-lang持久化的界面语言
/var/tmp/sysinfo-notify-state-<用户>推送告警的去重状态

常见问题

支持哪些操作系统?

仅支持 Linux,并需要 bash。常见发行版包括 Debian、Ubuntu、RHEL、CentOS、Rocky、Alma、Fedora、Alpine、Arch、openSUSE、Gentoo。安装脚本会识别 apt、dnf、yum、apk、pacman、zypper、emerge。macOS 不支持,因为限速依赖 Linux tc、IFB 等能力。

yq 报 Exec format error?

通常是 ARM 服务器装到了 amd64 的 yq。先删除再重装:sudo rm -f /usr/local/bin/yq,然后重新执行 install.sh。脚本会按 uname -m 下载对应的 yq。可用 yq --version 和 yq eval '.display.language' /etc/sysinfo/config.yaml 验证。

SSH 登录没看到面板?

先确认这是正常 SSH 登录,不是 scp/sftp 传文件。zsh 用户如果仍然看不到,重新执行 sudo ./install.sh 修复 hook。

改了配置但没效果?

普通用户运行时会优先读取 ~/.config/sysinfo/config.yaml。这个文件如果存在,会覆盖系统配置。删掉它,或用 SYSINFO_CONFIG=/etc/sysinfo/config.yaml sysinfo 指定配置。

推送收不到?

先跑 sysinfo --notify-test 看 Bark 通道是否正常。再检查 notify.enabled 是否为 true、bark.key 是否正确。测试规则时,可以临时把 threshold 改成 0。

限速没生效?

开启 IP 转发的网关机器默认跳过限速。限速还需要 tc 命令和 root 权限。运行 bash scripts/test_throttle.sh 看诊断结果。

开发测试

项目根目录有 Makefile,常用命令:

命令作用
make查看所有命令
make run本地跑一次面板
make test运行自动化测试
make install安装到系统
make deploy测试通过后安装
make docs-serve本地预览文档