本文目录导读:

在Linux/Unix系统中,可以用多种脚本(Bash、Python等)获取硬盘信息,以下是几种常见且实用的方法:
Bash 脚本(最常用)
使用 df 命令获取分区使用情况
#!/bin/bash # 获取所有挂载点的磁盘使用情况 echo "=== 磁盘分区使用情况 ===" df -h # 只显示物理硬盘(排除tmpfs等虚拟文件系统) echo "" echo "=== 物理硬盘分区 ===" df -h --type=ext4 --type=xfs --type=ntfs --type=vfat 2>/dev/null
使用 lsblk 获取块设备信息
#!/bin/bash echo "=== 块设备列表 ===" lsblk -o NAME,SIZE,TYPE,MOUNTPOINT,FSTYPE,MODEL echo "" echo "=== 详细设备信息 ===" lsblk -d -o NAME,SIZE,TYPE,TRAN,ROTA,MODEL
使用 fdisk 或 parted 获取分区表
#!/bin/bash echo "=== 分区表信息 ===" sudo fdisk -l 2>/dev/null | grep -E "^Disk /dev/[sv]d|^/dev/[sv]d" # 或者使用parted echo "" echo "=== 分区类型与大小 ===" sudo parted -l 2>/dev/null | grep -E "Disk /dev|Partition Table"
获取磁盘SMART健康状态
#!/bin/bash
# 需要安装 smartmontools
echo "=== 磁盘健康状态 ==="
for disk in /dev/sd[a-z] /dev/nvme[0-9]n[0-9]; do
if [ -b "$disk" ]; then
echo "--- $disk ---"
sudo smartctl -H "$disk" 2>/dev/null | grep -E "SMART overall-health|SMART Health Status"
fi
done
Python 脚本(跨平台兼容)
#!/usr/bin/env python3
import os
import subprocess
import json
def get_disk_info_linux():
"""获取Linux系统硬盘信息"""
info = {}
# 使用 df 命令
result = subprocess.run(['df', '-h', '--output=source,fstype,size,used,avail,pcent,target'],
capture_output=True, text=True)
info['df_output'] = result.stdout.splitlines()
# 使用 lsblk 命令(需要root权限获取更多信息)
try:
result = subprocess.run(['lsblk', '-J', '-o', 'NAME,SIZE,TYPE,MOUNTPOINT,FSTYPE'],
capture_output=True, text=True)
info['lsblk_json'] = json.loads(result.stdout)
except:
info['lsblk_json'] = "lsblk not available"
return info
def get_disk_info_windows():
"""获取Windows系统硬盘信息"""
import wmi
c = wmi.WMI()
info = {}
drives = []
for disk in c.Win32_DiskDrive():
drive_info = {
'model': disk.Model,
'size': int(disk.Size) // (1024**3), # GB
'interface': disk.InterfaceType,
'serial': disk.SerialNumber,
}
drives.append(drive_info)
info['drives'] = drives
# 获取分区信息
partitions = []
for partition in c.Win32_DiskPartition():
partitions.append({
'name': partition.Name,
'size': int(partition.Size) // (1024**3),
'type': partition.Type,
})
info['partitions'] = partitions
return info
if __name__ == "__main__":
if os.name == 'nt': # Windows
info = get_disk_info_windows()
print(json.dumps(info, indent=2))
else: # Linux/Unix
info = get_disk_info_linux()
print("df 命令输出:")
for line in info['df_output']:
print(line)
综合监控脚本
磁盘IO监控
#!/bin/bash # 监控磁盘IO(需要安装sysstat) echo "=== 磁盘IO统计 ===" iostat -x 1 3 2>/dev/null | tail -n +4 | head -n 5 # 使用iotop(需要root) echo "" echo "=== 实时磁盘IO(按w切换排序)===" sudo iotop -d 1 -n 5 -o 2>/dev/null | head -20
磁盘温度检测(需要安装hddtemp或nvme-cli)
#!/bin/bash
echo "=== 磁盘温度 ==="
for disk in /dev/sd[a-z] /dev/nvme[0-9]n[0-9]; do
if [ -b "$disk" ]; then
temp=$(sudo hddtemp "$disk" 2>/dev/null | awk '{print $NF}')
[ -n "$temp" ] && echo "$disk: $temp"
fi
done
# NVMe固态温度
echo ""
echo "=== NVMe设备温度 ==="
sudo nvme list 2>/dev/null | grep -E "Temperature|温度"
生成HTML报告的脚本
#!/bin/bash
# 生成磁盘健康报告
output="/tmp/disk_report_$(date +%Y%m%d).html"
cat > "$output" <<HTMLHEADER
<html>
<head><title>硬盘信息报告 - $(date)</title></head>
<body>
<h1>硬盘信息报告</h1>
<h2>1. 分区使用情况</h2>
<pre>
HTMLHEADER
# 添加df输出
df -h >> "$output"
echo "</pre><h2>2. 物理设备列表</h2><pre>" >> "$output"
lsblk -o NAME,SIZE,TYPE,MOUNTPOINT,FSTYPE,MODEL >> "$output"
echo "</pre><h2>3. SMART健康状态</h2><pre>" >> "$output"
for disk in /dev/sd[a-z] /dev/nvme[0-9]n[0-9]; do
if [ -b "$disk" ]; then
echo "--- $disk ---" >> "$output"
sudo smartctl -H "$disk" 2>/dev/null | grep -E "SMART overall-health|SMART Health Status" >> "$output"
fi
done
echo "</pre></body></html>" >> "$output"
echo "报告已生成: $output"
直接读取系统文件(无需外部命令)
#!/bin/bash
# 从/proc和/sys文件系统读取硬盘信息
echo "=== 从 /proc/partitions 读取分区信息 ==="
awk '{if(NR>1) print $4, $3/1024/1024 " MB"}' /proc/partitions | grep -v ^name
echo ""
echo "=== 从 /sys/block 获取块设备详细信息 ==="
for device in /sys/block/*; do
dev_name=$(basename "$device")
if [ -f "$device/size" ]; then
size=$(cat "$device/size")
size_gb=$((size * 512 / 1024 / 1024 / 1024))
echo "$dev_name: ${size_gb}GB"
fi
done
# 获取磁盘型号(需要root或特定权限)
echo ""
echo "=== 磁盘型号信息 ==="
for dev in /sys/block/sd* /sys/block/nvme*; do
if [ -f "$dev/device/model" ]; then
echo "$(basename $dev): $(cat $dev/device/model)"
fi
done
使用建议
- 权限问题:部分命令(如
fdisk -l、smartctl、iotop)需要root权限,建议使用sudo - 跨平台:Windows推荐用PowerShell + WMI,Linux用上述Bash脚本
- 输出格式:
- 日常监控:
df -h+lsblk - 详细分析:
fdisk -l+smartctl - 编程接口:Python脚本(可输出JSON)
- 日常监控:
需要保存脚本并赋予执行权限:
chmod +x disk_info.sh ./disk_info.sh
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播