当前位置: 首页 > article >正文

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进行挂载和卸载操作,以及创建和删除挂载点。
设备状态:频繁挂载和卸载可能会对设备造成不必要的磨损,请谨慎使用此脚本。
系统资源:频繁执行挂载和卸载操作可能会占用系统资源,请确保在适当的测试环境中运行。


http://www.kler.cn/a/552327.html

相关文章:

  • 线性模型 - Logistic 回归
  • 创建一个 JdbcService,并通过 Spring Boot 直接运行 SQL
  • ocr智能票据识别系统|自动化票据识别集成方案
  • 国密算法SM1、SM2、SM3和SM4 具体的使用和区别
  • PyTorch与TensorFlow的对比:哪个框架更适合你的项目?
  • 【ISO 14229-1:2023 UDS诊断(ECU复位0x11服务)测试用例CAPL代码全解析⑬】
  • STM32 看门狗
  • 数据结构(3)——单链表
  • 路由器负载均衡配置
  • 优选算法《位运算》
  • Qt: 基础知识与应用
  • 模拟解决哈希表冲突
  • 思科、华为、H3C常用命令对照表
  • 【Java】泛型与集合篇(二)
  • C#的一种多线程实现:System.Threading.ThreadPool.QueueUserWorkItem
  • 【蓝桥杯集训·每日一题2025】 AcWing 6123. 哞叫时间 python
  • 在阿里云Linux主机上运行大模型deepseek r1
  • Go 模块管理工具 `go mod tidy` 和 `go.sum` 文件详解
  • Django 创建表 choices的妙用:get_<field_name>_display()
  • 【ISO 14229-1:2023 UDS诊断(ECU复位0x11服务)测试用例CAPL代码全解析④】