公众号旧文

为什么我可以一条命令就彻底看清一台 VPS

作者:胖子阅读 —

每次我买新的 VPS,第一件事不是装环境,而是验机。

我想知道:

  • 这台机器是不是超售?
  • 磁盘是不是假 NVMe?
  • 线路到底怎么样?
  • 有没有 AES-NI?
  • 用的是什么虚拟化?

这些问题,我通常只用一条命令解决:

curl
 -Lso- bench.sh | bash

它背后的脚本,来自:Teddysun

这就是非常经典的 —— Bench.sh

今天我就系统讲讲,这个脚本到底做了什么。

一、它不是测速脚本,而是一套体检工具

很多人以为它只是测带宽,其实不是。

它做的事情包括:

  • CPU 信息检测
  • 内存使用情况
  • 磁盘容量统计
  • 磁盘 I/O 写入测试
  • TCP 拥塞控制算法
  • 虚拟化类型判断
  • IPv4 / IPv6 连通性
  • 全球多节点网络测速

它更像是一份服务器的体检报告。

二、CPU 和硬件信息检测

它会读取:

/proc/cpuinfo
free
df
uptime
sysctl

输出:

  • CPU 型号
  • 核心数
  • 主频
  • Cache 大小
  • 是否支持 AES-NI
  • 是否支持 VM-x / AMD-V
  • 内核版本
  • TCP 拥塞控制算法(比如 bbr / cubic)

如果我看到:

AES-NI : Enabled

那说明这台机器做加密类应用是没问题的。

如果 TCP 是:

bbr

那通常意味着网络延迟优化不错。

三、虚拟化检测:它能看出你是不是套娃

脚本会判断当前环境是:

  • KVM
  • OpenVZ
  • Docker
  • LXC
  • Xen
  • Hyper-V
  • VMware
  • Dedicated

判断方式包括:

  • systemd-detect-virt
  • dmidecode
  • dmesg
  • /proc 信息

有些商家写独立服务器,结果跑出来是 KVM,那就有意思了。

四、磁盘 I/O 测试:真假 NVMe 一眼见分晓

它会用 dd 写入一个 1GB 文件,连续测试 3 次,取平均值。

如果我看到:

  • 30 MB/s —— 基本是机械盘
  • 150 MB/s —— 普通 SSD
  • 800+ MB/s —— 真 NVMe
  • 2000+ MB/s —— 本地 NVMe 或缓存

当然,这只是顺序写速度,不代表真实随机 IO。

但对于是否超售的判断,非常直观。

五、网络测速:调用官方 Speedtest CLI

脚本会下载官方:

  • Speedtest by Ookla CLI

然后测试多个固定节点,比如:

  • 洛杉矶
  • 达拉斯
  • 蒙特利尔
  • 巴黎
  • 阿姆斯特丹
  • 苏州
  • 宁波
  • 香港
  • 新加坡
  • 台北
  • 东京

输出:

  • 上传速度
  • 下载速度
  • 延迟

这一步对我来说最重要,因为线路质量决定了一切。

六、安全性问题:我是否应该直接执行该脚本?

很多人担心:

curl
 xxx | bash

不安全。

理论上讲:

  • DNS 被劫持
  • 仓库被入侵
  • 中间人攻击

都可能发生。

所以在生产环境,我通常会先看一眼代码,再执行。

这才是比较理性的做法。

七、我通常怎么用它?

我一般会在以下场景使用:

  1. 新买 VPS
  2. 更换机房
  3. 怀疑线路变差
  4. 觉得磁盘性能下降
  5. 对比不同商家机器

它最大的价值不是测速,而是建立一个可对比的标准。

我可以用同一套测试,在不同机器上跑,横向比较。

八、它的局限性

它不是完美的:

  • 只测顺序写 IO
  • 网络测试受对端节点影响
  • 不测试真实生产负载
  • 不测试多线程极限

但它足够轻量,足够快速,足够直观。

九、总结一句话

Bench.sh 不是神器。

但它是一把很顺手的瑞士军刀。

对我来说,只要一条命令,就能大概看清一台服务器的底子。

在 VPS 世界里,这已经足够了。

最后附上官网:https://bench.sh/

再附上一键脚本:

curl
 -Lso- bench.sh | bash