公众号旧文
为什么我可以一条命令就彻底看清一台 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 被劫持
- 仓库被入侵
- 中间人攻击
都可能发生。
所以在生产环境,我通常会先看一眼代码,再执行。
这才是比较理性的做法。
七、我通常怎么用它?
我一般会在以下场景使用:
- 新买 VPS
- 更换机房
- 怀疑线路变差
- 觉得磁盘性能下降
- 对比不同商家机器
它最大的价值不是测速,而是建立一个可对比的标准。
我可以用同一套测试,在不同机器上跑,横向比较。
八、它的局限性
它不是完美的:
- 只测顺序写 IO
- 网络测试受对端节点影响
- 不测试真实生产负载
- 不测试多线程极限
但它足够轻量,足够快速,足够直观。
九、总结一句话
Bench.sh 不是神器。
但它是一把很顺手的瑞士军刀。
对我来说,只要一条命令,就能大概看清一台服务器的底子。
在 VPS 世界里,这已经足够了。
最后附上官网:https://bench.sh/
再附上一键脚本:
curl
-Lso- bench.sh | bash