← 返回文章

硬體(Hardware)

硬體硬體UbuntuWindowsCPURAM磁碟

伺服器變慢,第一件事就是看 CPU、記憶體、磁碟哪個先滿。這頁按 Ubuntu 和 Windows 分兩區,收查硬體狀態的指令:CPU 使用率、RAM、磁碟用量與規格,Ubuntu 區另外有磁碟分割與掛載的操作。指令都是可以直接貼的,多數附輸出範例,方便對照判讀。

Ubuntu

CPU 使用率

Code
top -bn1 | head -20

top -bn1 以 batch 模式跑一次並輸出;head -20 只取前 20 行,方便腳本或速查。

Code
mpstat 1 1

mpstat(需安裝 sysstat)每秒取樣一次、共 1 次,輸出整體與各 CPU 使用率。

輸出範例(top 的 CPU 行):

Code
%Cpu(s):  2.3 us,  1.0 sy,  0.0 ni, 96.5 id,  0.0 wa,  0.0 hi,  0.2 si,  0.0 st

us 使用者、sy 系統、id 閒置;id 高表示 CPU 負載低。

記憶體(RAM)

Code
free -h

-h 以人類可讀單位(GiB、MiB)顯示;列出 total、used、free、shared、buff/cache、available。

Code
cat /proc/meminfo | head -10

讀取核心提供的記憶體資訊,可看到 MemTotal、MemFree、Buffers、Cached 等細項。

輸出範例(free -h):

Code
              total        used        free      shared  buff/cache   available
Mem:           7.7Gi       2.1Gi       3.2Gi       100Mi       2.4Gi       5.2Gi
Swap:          2.0Gi       0.0Gi       2.0Gi

available 才是實際可給新程式用的記憶體(含可回收的 cache)。

磁碟使用量

Code
df -h

-h 以人類可讀單位(G、M)顯示每個掛載點的總量、已用、可用、使用率與掛載路徑。

Code
df -h /

只顯示根目錄所在磁碟,適合腳本判斷根碟是否快滿。

輸出範例:

Code
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       100G   45G   50G  48% /
tmpfs           3.9G  1.2M  3.9G   1% /dev/shm

Avail 是未保留給 root 的可用空間;Use% 為使用率。

硬體規格

Linux

Code
lscpu

顯示架構、型號、核心數、執行緒數、快取、頻率等。

Code
cat /proc/cpuinfo | grep -E "model name|cores|siblings"

只取型號與核心相關欄位;model name 可能重複(每邏輯核心一行),看一行即可。

輸出範例(lscpu 節錄):

Code
Architecture:            x86_64
Model name:              Intel(R) Core(TM) i7-9700K CPU @ 3.60GHz
CPU(s):                  8
Thread(s) per core:      1
Core(s) per socket:      8

磁碟分割與掛載

Disk Flow

Code
# 1. 查看狀態
sudo lsblk
sudo parted /dev/sda print

# 2. 分割(parted)
sudo parted /dev/sda mklabel gpt
sudo parted /dev/sda mkpart primary 0% 35%
sudo parted /dev/sda mkpart primary 35% 85%
sudo parted /dev/sda mkpart primary 85% 95%
sudo parted /dev/sda mkpart primary 95% 100%
sudo partprobe /dev/sda
lsblk | grep sda

# 3. 格式化 ext4
sudo mkfs.ext4 -L <label1> /dev/sda1
sudo mkfs.ext4 -L <label2> /dev/sda2
sudo mkfs.ext4 -L <label3> /dev/sda3
sudo mkfs.ext4 -L <label4> /dev/sda4

# 4. 掛載點
sudo mkdir -p <mount_base>/{<mount1>,<mount2>,<mount3>,<mount4>}

# 5. UUID
sudo blkid /dev/sda1
# ... sda2, sda3, sda4

# 6. /etc/fstab(UUID 掛載,ext4 defaults,noatime 0 2)
sudo vi /etc/fstab
sudo systemctl daemon-reload

# 7. 掛載並檢查
sudo mount -a
df -h | grep /data/
lsblk

Disk

直接格式化整個硬碟

Code
sudo mkfs.ext4 /dev/[disk-name]

建立掛載點 / 掛載 / 取消掛載

Code
sudo mkdir <mount_point>
sudo mount /dev/<disk> <mount_point>
sudo umount <mount_point>
sudo umount <mount_base>/*

編輯 fstab

Code
sudo cp /etc/fstab /etc/fstab.backup
sudo vi /etc/fstab

GPU

Code
sudo lshw -c display

腳本:產生 fstab 條目

Code
#!/bin/bash
declare -A mounts=(
  ["/dev/sda1"]="<mount_base>/<mount1>"
  ["/dev/sda2"]="<mount_base>/<mount2>"
  ["/dev/sda3"]="<mount_base>/<mount3>"
  ["/dev/sda4"]="<mount_base>/<mount4>"
)
echo "# 資料碟掛載配置"
for device in "${!mounts[@]}"; do
  uuid=$(sudo blkid -s UUID -o value "$device")
  if [ -n "$uuid" ]; then
    echo "UUID=$uuid  ${mounts[$device]}  ext4  defaults,noatime  0  2"
  fi
done

Windows

CPU 使用率

Code
Get-Counter '\Processor(_Total)\% Processor Time' -SampleInterval 1 -MaxSamples 1

取「整體處理器時間百分比」一次;數值 0–100,愈高表示 CPU 愈忙。

Code
Get-CimInstance Win32_Processor | Select-Object LoadPercentage

LoadPercentage 為當下 CPU 負載百分比,不需取樣間隔。

輸出範例:

Code
Timestamp                 CounterSamples
---------                 --------------
3/12/2026 10:00:00 AM     \\<hostname>\processor(_total)\% processor time : <value>

記憶體(RAM)

Code
Get-CimInstance Win32_OperatingSystem | Select-Object TotalVisibleMemorySize, FreePhysicalMemory | ForEach-Object { [PSCustomObject]@{ TotalMB = [math]::Round($_.TotalVisibleMemorySize/1024,2); FreeMB = [math]::Round($_.FreePhysicalMemory/1024,2) } }

TotalVisibleMemorySizeFreePhysicalMemory 單位為 KB,除以 1024 得到 MB。

Code
systeminfo | findstr /C:"Memory"

用系統內建 systeminfo 過濾記憶體相關行,不需 PowerShell 模組。

輸出範例(systeminfo):

Code
Total Physical Memory:     16,384 MB
Available Physical Memory: 8,192 MB

輸出範例(Get-CimInstance):

Code
TotalMB  FreeMB
-------  ------
16384    8192

磁碟使用量

Code
Get-PSDrive -PSProvider FileSystem | Select-Object Name, @{N='Used(GB)';E={[math]::Round($_.Used/1GB,2)}}, @{N='Free(GB)';E={[math]::Round($_.Free/1GB,2)}}

列出本機磁碟(C、D…)的已用與可用空間,單位為 GB。

Code
Get-Volume | Where-Object { $_.DriveLetter } | Select-Object DriveLetter, FileSystemLabel, @{N='SizeGB';E={[math]::Round($_.Size/1GB,2)}}, @{N='FreeGB';E={[math]::Round($_.SizeRemaining/1GB,2)}}

以磁碟區為單位,顯示代號、標籤、總容量與剩餘空間。

輸出範例:

Code
Name Used(GB) Free(GB)
---- --------- --------
C    120.5     80.2
D    200.0     150.3

硬體規格

Windows

Code
Get-CimInstance Win32_Processor | Select-Object Name, NumberOfCores, NumberOfLogicalProcessors, MaxClockSpeed

Name 為型號,NumberOfCores 實體核心數,NumberOfLogicalProcessors 邏輯處理器數,MaxClockSpeed 最大頻率(MHz)。

Code
Get-CimInstance Win32_Processor | Format-List Name, NumberOfCores, NumberOfLogicalProcessors, MaxClockSpeed

以清單格式顯示,方便複製型號。

輸出範例:

Code
Name                      : Intel(R) Core(TM) i7-9700K CPU @ 3.60GHz
NumberOfCores             : 8
NumberOfLogicalProcessors : 8
MaxClockSpeed             : 3600