Linux shell测试命令执行成功率
。脚本将每秒执行一次挂载和卸载操作,统计成功率,并在失败时打印当前的系统运行时间。以下是示例脚本:
#!/bin/bash
MOUNT_POINT="/zfmnt01/sda1"
DEVICE="/dev/sda1"
SUCCESS_COUNT=0
FAILURE_TIMES=()
# Create the mount point if it doesn't exist
mkdir -p "$MOUNT_POINT"
# Loop 100 times
for ((i=1; i<=100; i++))
do
# Mount the device
mount "$DEVICE" "$MOUNT_POINT" 2>/dev/null
MOUNT_STATUS=$?
# Unmount the device
umount "$MOUNT_POINT" 2>/dev/null
UMOUNT_STATUS=$?
# Check if both mount and umount were successful
if [ $MOUNT_STATUS -eq 0 ] && [ $UMOUNT_STATUS -eq 0 ]; then
SUCCESS_COUNT=$((SUCCESS_COUNT + 1))
else
# Print the current system uptime if failed
current_uptime=$(cut -d. -f1 /proc/uptime)
FAILURE_TIMES+=("$current_uptime")
echo "Failed at system uptime: $current_uptime"
fi
# Sleep for 1 second
sleep 1
done
# Print the total success rate
TOTAL_ATTEMPTS=100
SUCCESS_RATE=$(echo "scale=2; $SUCCESS_COUNT / $TOTAL_ATTEMPTS * 100" | bc)
echo "Total attempts: $TOTAL_ATTEMPTS"
echo "Successful mounts/unmounts: $SUCCESS_COUNT"
echo "Success rate: $SUCCESS_RATE%"
# Print the failure times if any
if [ ${#FAILURE_TIMES[@]} -gt 0 ]; then
echo "Failures occurred at the following system uptimes:"
for uptime in "${FAILURE_TIMES[@]}"; do
echo " $uptime"
done
fi
说明:
创建挂载点:如果挂载点不存在,则创建它。
循环100次:使用for循环执行100次挂载和卸载操作。
挂载和卸载:使用mount和umount命令进行挂载和卸载操作,并将结果存储在状态变量中。
检查状态:如果挂载和卸载都成功,则增加成功计数器;如果失败,则打印当前系统运行时间(uptime),并存储在失败时间数组中。
等待1秒:使用sleep 1命令等待1秒。
统计结果:循环结束后,计算并打印成功率和失败的时间。
运行脚本:
将上述脚本保存为文件(例如mount_umount_test.sh),然后赋予执行权限并运行:
chmod +x mount_umount_test.sh
./mount_umount_test.sh
注意:
权限:确保你有权限对/dev/sda1进行挂载和卸载操作,以及创建和删除挂载点。
设备状态:频繁挂载和卸载可能会对设备造成不必要的磨损,请谨慎使用此脚本。
系统资源:频繁执行挂载和卸载操作可能会占用系统资源,请确保在适当的测试环境中运行。