Vũ Văn HảiFull-stack · AI-native
GuidesBlog
Discuss a project

© 2026 Vu Van Hai · Written from real deployment experience.

HomeGuidesBlogRSS
  1. Guides
  2. /VPS
  3. /Quick-check a VPS's specs with a single command

Quick-check a VPS's specs with a single command

A one-line bash script that checks a VPS's OS, CPU, RAM, disk and network in about 15 seconds, plus reference tables that tell you whether each number is weak, fine or strong.

Updated: Sep 21, 20265 min read
VPSPerformanceNetworking
On this page
  • Quick reference
  • Step by step
  • 1. Run the script
  • 2. Read the results
  • 3. Understand the scoring
  • VPS spec reference tables
  • CPU
  • RAM
  • Disk
  • Network
  • Suggested specs by use case
  • Troubleshooting
  • curl: command not found
  • bc: command not found (affects the Disk I/O rating)
  • Download speed shows "Không test được" (could not test)
  • Disk I/O results look inaccurate

When you have just bought or been handed a VPS, you want to know quickly how capable it is. The vps-check.sh bash script checks every key spec (OS, CPU, RAM, disk, network) with a single command, prints a colorized report, and rates each section automatically: Good / Needs attention / Problem.

Throughout, replace <username> and <server-ip> with your own user and VPS IP.

Quick reference

The fastest way - paste this into the terminal of any VPS:

curl -sL https://vuhai.io.vn/scripts/vps-check.sh | bash

curl ... | bash runs a script straight off the internet. Make a habit of reading a script before you run it: use the "download, then run" option below and inspect the file with less ~/vps-check.sh first, especially on production servers.

Or download it, then run it:

curl -sL https://vuhai.io.vn/scripts/vps-check.sh -o ~/vps-check.sh
chmod +x ~/vps-check.sh
bash ~/vps-check.sh

Copy it to another VPS (if you already have the file):

scp ~/vps-check.sh <username>@<server-ip>:~/vps-check.sh
ssh <username>@<server-ip> "bash ~/vps-check.sh"

Step by step

1. Run the script

SSH into the VPS you want to check, then run the one-liner:

curl -sL https://vuhai.io.vn/scripts/vps-check.sh | bash

The script scans for about 15 seconds and then prints the results.

2. Read the results

The script reports 6 main sections:

#SectionWhat it checks
1Operating systemOS, kernel, uptime, virtualization type
2CPUModel, vCPU count, frequency, load average
3RAMTotal/used/free, swap, % used
4DiskCapacity, filesystem, write speed (64MB benchmark)
5NetworkIP, datacenter location, provider, download speed, ping
6SummaryOverview table + overall score out of 6

3. Understand the scoring

Each section is rated automatically with an icon and a color:

  • Green - Good, nothing to worry about
  • Yellow - Needs attention, keep an eye on it
  • Red - Problem, needs fixing

The overall score out of 6 is based on 6 criteria: CPU load, RAM, Disk, Swap, Network speed, Ping.

VPS spec reference tables

CPU

MetricWeakAverageGoodStrong
vCPU1 vCPU2 vCPU4 vCPU8+ vCPU
Load (% of vCPU count)> 80%50-80%20-50%< 20%
Frequency< 1.5 GHz1.5-2.5 GHz2.5-3.5 GHz> 3.5 GHz

Reading load: a load of 1.0 on a 1 vCPU VPS = 100% utilization. A load of 2.0 on a 4 vCPU VPS = 50% utilization (2/4). Ideally load stays below 70% of your vCPU count.

RAM

MetricWeakAverageGoodStrong
Total RAM512MB1-2 GB4-8 GB16+ GB
% used> 80%50-80%30-50%< 30%
SwapNone< 1 GB1-2 GB2+ GB

Running with no swap is dangerous: when RAM runs out, the system OOM-kills processes. Create swap equal to at least 50% of your RAM.

Disk

MetricWeakAverageGoodStrong
Capacity< 20 GB20-40 GB40-80 GB100+ GB
% used> 85%60-85%30-60%< 30%
Write speed< 80 MB/s (HDD)80-200 MB/s (entry-level SSD)200-500 MB/s (good SSD)> 500 MB/s (NVMe)

Making sense of disk I/O: an HDD is usually under 100 MB/s. A SATA SSD does about 200-500 MB/s. An NVMe SSD goes above 500 MB/s and can reach 2-3 GB/s.

Network

MetricWeakAverageGoodStrong
Download< 30 Mbps30-100 Mbps100-500 Mbps> 500 Mbps
Ping (Google DNS)> 100 ms50-100 ms10-50 ms< 10 ms

Ping depends on the datacenter location: a VPS in Singapore pings Vietnam in about 20-40 ms, one in the US about 150-200 ms. Pick the datacenter closest to your users.

Suggested specs by use case

Use casevCPURAMDiskNotes
Blog / Landing page11 GB20 GBNginx + static site
Small app (Node/Python)1-22 GB30 GB+ 1GB swap
Web app + Database2-44 GB40-80 GBPostgreSQL needs RAM
Production (many users)4-88-16 GB80-160 GB+ Redis cache
CI/CD / Build server4+8+ GB100+ GBCPU-intensive

Troubleshooting

curl: command not found

# Ubuntu/Debian
apt update && apt install -y curl

# CentOS/RHEL
yum install -y curl

bc: command not found (affects the Disk I/O rating)

# Ubuntu/Debian
apt install -y bc

# CentOS/RHEL
yum install -y bc

Download speed shows "Không test được" (could not test)

Cause: a firewall is blocking outbound HTTPS. Check with:

curl -s --connect-timeout 5 https://speed.cloudflare.com/__down?bytes=1000

If nothing comes back -> open outbound port 443, or check iptables/firewalld.

Disk I/O results look inaccurate

The script only writes a 64MB test file - it is a quick benchmark, not a replacement for a dedicated tool. For a more accurate benchmark:

# Test with fio (needs to be installed separately)
fio --name=test --ioengine=libaio --rw=write --bs=1M --size=256M --numjobs=1 --runtime=10 --direct=1
PreviousAutomatic maintenance page with Caddy during Docker deploysNextServe media via Cloudflare CDN + Backblaze B2 (free egress)

Related articles

  • Set up Caddy as a reverse proxy on a VPS with Docker

    Run Caddy as a Dockerized reverse proxy on a fresh VPS: create a shared network, write the Caddyfile and docker-compose file, get HTTPS automatically, then add new domains with a single zero-downtime reload.

    VPS

    VPS
  • Connect to PostgreSQL on a VPS through an SSH tunnel

    Use an SSH tunnel so your dev machine can reach PostgreSQL on a VPS without exposing port 5432 to the internet, plus the DATABASE_URL setup for local and production.

    Database

    Database
  • Tune VPS performance: swap, PostgreSQL and the DB pool

    Speed up a 16GB Ubuntu VPS that runs many Docker containers next to PostgreSQL: add swap to keep the OOM Killer away, tune PostgreSQL for more RAM and SSD storage, then raise the app's connection pool.

    Database

    Database

Written by Vu Van Hai

I'm Hai, a full-stack developer based in Ho Chi Minh City. These guides come from systems I built and run myself. Need to build or untangle something similar? Get in touch.

Discuss a projectMore guides

Spot a mistake or a command that no longer works? Let me know

On this page

  • Quick reference
  • Step by step
  • 1. Run the script
  • 2. Read the results
  • 3. Understand the scoring
  • VPS spec reference tables
  • CPU
  • RAM
  • Disk
  • Network
  • Suggested specs by use case
  • Troubleshooting
  • curl: command not found
  • bc: command not found (affects the Disk I/O rating)
  • Download speed shows "Không test được" (could not test)
  • Disk I/O results look inaccurate