写一个循环打印硬盘smart信息shell脚本
时间: 2024-09-19 17:10:02 浏览: 70
创建一个简单的shell脚本来监控硬盘SMART信息,你可以使用`smartctl`命令,它是一个用于管理和报告SCSI和块设备的工具。下面是一个基础示例,这个脚本会在后台持续检查指定硬盘的SMART状态,并在检测到错误时打印相关信息:
```bash
#!/bin/bash
# 替换为你需要监视的硬盘路径,如 '/dev/sda'
DISK_PATH="/dev/sda"
while true; do
# 使用smartctl获取SMART数据
SMART_DATA=$(smartctl -a $DISK_PATH)
# 检查SMART信息是否正常,若发现不正常的错误,打印警告
if [[ "$SMART_DATA" =~ "Predictive Failure Count.*Critical" ]]; then
echo "硬盘 '$DISK_PATH'存在SMART预测性故障!"
echo "$SMART_DATA"
fi
# 设置延迟时间(秒),例如每5分钟检查一次
sleep 300
done &
# 后台运行并保持循环
echo "Smart monitoring script is running in the background..."
```
**注意:**
1. 运行此脚本前,确保你有权限访问SMART数据并且已经安装了`smartmontools`包。
2. `-a`选项用于显示详细的SMART属性,如果硬盘支持,还会包含健康状况。
相关问题
写一个shell脚本,在FIO读写时,每隔2s/5s分别给单个硬盘发送smartctl -A/smartctl -a命令,记录硬盘性能值
编写一个Shell脚本来定期检查硬盘性能并记录SMART状态,你可以创建一个名为`check_disk_performance.sh`的文件,内容如下:
```bash
#!/bin/bash
# 硬盘设备名称,这里假设为'/dev/sda'
HDD Device="/dev/sda"
# 检查间隔时间,单位秒
INTERVAL_2S=2
INTERVAL_5S=5
# 输出日志文件名
LOG_FILE="disk_performance.log"
# 使用函数来运行SMART命令并记录结果
run_smart_command() {
local command="$1"
echo "$(date) - Running $command on $HDD Device" >> ${LOG_FILE}
smartctl "$command" "${HDD Device}" >> ${LOG_FILE} 2>&1
}
# 主循环开始
while true; do
# 每隔2秒执行一次
run_smart_command -A
sleep ${INTERVAL_2S}
# 每隔5秒再执行一次,覆盖之前的记录
run_smart_command -a
sleep ${INTERVAL_5S}
done
# 添加执行权限
chmod +x check_disk_performance.sh
# 启动脚本
./check_disk_performance.sh &
```
这个脚本会启动一个无限循环,每2秒运行一次`smartctl -A`命令,每次运行都会更新到`disk_performance.log`文件中。5秒后,它会再次运行`smartctl -a`命令替换之前的数据。
阅读全文