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

上海网站制作公司多少钱中国建筑集团有限公司500强排名

上海网站制作公司多少钱,中国建筑集团有限公司500强排名,网站建设人员需求分析,做网站的怎么跑业务在Linux终端实现批量删除OpenStack实例,支持并发删除、安全确认、重试机制、优先清理运行中实例 #!/bin/bash # # 增强版 OpenStack 删除实例脚本 # 功能:支持并发删除、安全确认、重试机制、优先清理运行中实例 # 更新:2025年4月30日 # ##…

在Linux终端实现批量删除OpenStack实例,支持并发删除、安全确认、重试机制、优先清理运行中实例

#!/bin/bash
# ======================================================================
# 增强版 OpenStack 删除实例脚本
# 功能:支持并发删除、安全确认、重试机制、优先清理运行中实例
# 更新:2025年4月30日
# ======================================================================#######################################
# 配置区(用户可自定义参数)
#######################################
delete_InstanceMAX_RETRY=20     # 最大尝试次数(删除失败时尝试再次删除实例)
CHECK_INTERVAL=5                # 实例状态检测间隔(单位:秒)
no_InstanceMAX_RETRY_TIME=20    # 实例列表为空,连续监测实例列表都是空的次数
CONCURRENCY=2                   # 并发删除线程数(建议不超过 API 限制)
MAX_WAIT_TIME=3600              # 最大等待超时时间(单位:秒,60 分钟)LOG_FILE="./log_instance_delete_$(date +%Y%m%d).log" # 日志文件路径(自动按日期生成)# 统计变量
TOTAL_DELETED_INSTANCES=0        # 已删除实例总数统计
DELETED_INSTANCES_FILE="/tmp/deleted_instances.txt" # 已删除实例ID临时记录文件# 颜色定义(终端输出美化)
RED='\033[0;31m'    # 红色 - 错误/危险操作
GREEN='\033[0;32m'  # 绿色 - 成功/正常状态
YELLOW='\033[0;33m' # 黄色 - 警告/等待状态
BLUE='\033[0;34m'   # 蓝色 - 执行中/进度信息
NC='\033[0m'        # 无颜色 - 重置终端颜色#######################################
# 函数:带重试机制的实例删除
# 参数:
#   $1 : 实例ID(必填)
# 返回值:
#   0 - 删除成功 | 1 - 删除失败
# 描述:
#   使用指数退避策略重试删除,最多尝试 delete_InstanceMAX_RETRY 次删除实例
#######################################
retry_delete() {local instance_id=$1for ((i=1; i<=delete_InstanceMAX_RETRY; i++)); dolog "${BLUE}尝试删除实例 [ID: $instance_id] (第 $i 次尝试)...${NC}"if nova force-delete "$instance_id"; thenlog "${GREEN}删除实例成功: $instance_id${NC}"echo "$instance_id" >> "$DELETED_INSTANCES_FILE"return 0fisleep $((i*2)) # 指数退避等待donelog "${RED}错误:删除实例 $instance_id 失败,已达最大重试次数(${delete_InstanceMAX_RETRY} 次)${NC}"return 1
}#######################################
# 函数:安全获取实例列表
# 参数:
#   $1 : 实例状态(默认 ACTIVE)
# 返回值:
#   实例ID列表(格式:每行一个ID)
# 描述:
#   过滤无效字符并格式化输出,避免脏数据干扰
#######################################
safe_get_instances() {local status=${1:-"ACTIVE"}nova list --status $status | awk -F '|' '/[0-9a-f]{8}-/ {gsub(/ /, "", $2);if ($4 ~ status) print $2}' status="$status"
}#######################################
# 函数:日志记录
# 参数:
#   $1 : 日志信息(支持颜色代码)
# 描述:
#   自动添加时间戳,并同时输出到终端和日志文件
#######################################
log() {local msg="$1"echo -e "$(date '+%Y-%m-%d %T') - $msg" | tee -a "$LOG_FILE"
}# 导出函数到子 Shell(确保并发调用时可用)
export -f log retry_delete#######################################
# 主流程
######################################## 解析命令行参数
while getopts "s:i:c:l:" opt; docase $opt ins) STATUS=$OPTARG;;    # 指定目标实例状态(如 ACTIVE/BUILD)i) CHECK_INTERVAL=$OPTARG;;  # 自定义检测间隔时间c) CONCURRENCY=$OPTARG;;     # 调整并发线程数l) LOG_FILE=$OPTARG;;        # 指定日志文件路径*) echo -e "${RED}用法: $0 [-s 状态] [-i 间隔] [-c 并发数] [-l 日志路径]${NC}"exit 1;;esac
done# 初始化 OpenStack 环境
source /openstack/admin-openrc.sh || { log "${RED}错误:环境变量加载失败,请检查 admin-openrc.sh 文件权限或路径${NC}"exit 1
}# 检查日志目录可写性
if [ ! -w "$(dirname "$LOG_FILE")" ]; thenecho -e "${RED}错误:日志目录不可写 [路径: $(dirname "$LOG_FILE")]${NC}" >&2exit 1
fi# 初始化临时文件(记录已删除实例)
> "$DELETED_INSTANCES_FILE"# 进程锁检查(防止重复运行)
LOCK_FILE="/tmp/os_clean.lock"
if [ -e "$LOCK_FILE" ]; thenlog "${YELLOW}警告:检测到已有清理进程运行中 [PID: $(cat $LOCK_FILE)]${NC}"exit 1
fi
echo $$ > "$LOCK_FILE"
trap 'rm -f "$LOCK_FILE"; TOTAL_DELETED_INSTANCES=$(wc -l < "$DELETED_INSTANCES_FILE"); log "${GREEN}===== 脚本进程中断退出,已删除实例数: $TOTAL_DELETED_INSTANCES ====="; rm -f "$DELETED_INSTANCES_FILE"' EXIT# 安全确认(确保转义符被解析)
if [[ -t 0 ]]; thenread -p "$(printf "${YELLOW}危险操作:是否确认执行删除实例?(y/N): ${NC}")" -n 1 confirm[[ $confirm != "y" ]] && { log "操作已取消"; exit; }echo
fi# 主循环(状态检测与删除)
log "\n${GREEN}===== 开始删除实例 [时间: $(date +%T)] ====="
start_time=$(date +%s)
empty_count=0  # 连续空检测计数器while :; do# 超时检查(防止无限等待)if (( $(date +%s) - start_time > MAX_WAIT_TIME )); thenlog "${RED}错误:操作超时,已超过最大等待时间(${MAX_WAIT_TIME} 秒)${NC}"exit 1fi# 获取目标实例列表instances=$(safe_get_instances "${STATUS:-ACTIVE}")creating_instances=$(safe_get_instances "BUILD")# 优先删除运行中的实例if [ -n "$instances" ]; thenlog "检测到 ${#instances[@]} 个运行中实例,启动并发删除..."printf "%s\n" "${instances[@]}" | xargs -P $CONCURRENCY -I {} bash -c "delete_InstanceMAX_RETRY='$delete_InstanceMAX_RETRY'LOG_FILE='$LOG_FILE'DELETED_INSTANCES_FILE='$DELETED_INSTANCES_FILE'$(declare -f log retry_delete)retry_delete \"{}\""sleep $((CHECK_INTERVAL/2))  # 降低 API 请求频率continuefi# 处理创建中的实例(等待后重试)if [ -n "$creating_instances" ]; thenlog "${YELLOW}提示:检测到 ${#creating_instances[@]} 个创建中实例,等待 ${CHECK_INTERVAL}...${NC}"sleep $CHECK_INTERVALcontinuefi# 空状态处理(连续检测退出机制)if [ -z "$instances" ]; thenlog "${YELLOW}提示:未发现可操作实例,等待 ${CHECK_INTERVAL} 秒后重试,至多重试${no_InstanceMAX_RETRY_TIME}...${NC}"sleep $CHECK_INTERVAL# 连续${no_InstanceMAX_RETRY_TIME} 次空检测则退出if (( empty_count++ >= ${no_InstanceMAX_RETRY_TIME} )); thenTOTAL_DELETED_INSTANCES=$(wc -l < "$DELETED_INSTANCES_FILE")log "${GREEN}===== 脚本运行清理完成,已删除实例总数: ${TOTAL_DELETED_INSTANCES} ====="exit 0ficontinuefiempty_count=0  # 重置空检测计数器
done

文章转载自:

http://dXWmdRWo.hdLhh.cn
http://y3OPMCMN.hdLhh.cn
http://OWEPnIEx.hdLhh.cn
http://aOAfkS3b.hdLhh.cn
http://jsBcI9Qp.hdLhh.cn
http://uvyMFNL6.hdLhh.cn
http://dgE69X2b.hdLhh.cn
http://jeItTA2W.hdLhh.cn
http://HCBCemiX.hdLhh.cn
http://tb4kCjsd.hdLhh.cn
http://wBCKV0I7.hdLhh.cn
http://W5vc18li.hdLhh.cn
http://0B7g8is3.hdLhh.cn
http://34hckDVx.hdLhh.cn
http://wRGuLSgx.hdLhh.cn
http://132RHh7x.hdLhh.cn
http://NXecp6Sl.hdLhh.cn
http://qQ5iecJO.hdLhh.cn
http://bMq50V35.hdLhh.cn
http://oAxcA3cu.hdLhh.cn
http://o9QrviOU.hdLhh.cn
http://azYLOmQi.hdLhh.cn
http://1gtS9LdG.hdLhh.cn
http://SC5C1NIB.hdLhh.cn
http://7mWDBoGP.hdLhh.cn
http://vNRMmAdn.hdLhh.cn
http://XRCT3Hco.hdLhh.cn
http://GdDoW3M7.hdLhh.cn
http://DRXPOSlo.hdLhh.cn
http://MHKtkkud.hdLhh.cn
http://www.dtcms.com/wzjs/714781.html

相关文章:

  • 手机端网站 优帮云短网址生成api接口
  • 公司一定建设网站吗网站建设方案书填写示例
  • 个人可以建购物网站吗网站那种推广链接怎么做
  • 安卓图形网站建设wordpress 关键词 描述 插件
  • 网站做导航的地图wordpress获取权限
  • 视频网站推广怎么做wordpress 自定义主题
  • 网站技术支持是什么福州h5建站
  • 代人做网站机械公司网站模板
  • 网站地图建设有什么用网站建设哈尔滨网站建设1
  • 网站建设开票分类编码网站开发人员的要求
  • 微信网站是什么wordpress写文章插件
  • 公司的做网站厦门跨境电商前十
  • 装饰网站建设价格wordpress 无权限
  • 唐山市住房城乡建设部网站主页在农村做相亲网站怎么样
  • 济宁有没有专门做网站的wordpress 4.4.3
  • 查看网站百度排名wordpress主题腾讯EDC
  • 环保部网站官网建设项目限批办法男的做直播网站
  • 做网站 聊城网站侧边栏代码
  • 茂名网站建设方案外包制作手机网站建设
  • 做高仿网站有哪些ftp中不能打开wordpress
  • 怎么做网站建设销售汉口江岸区城市建设局网站
  • 建筑设计费一般多少钱一平方张家口seo
  • 做一件代发的网站免费ppt模板下载简约风
  • wordpress返回上页百度seo是啥意思
  • 爱站工具包的模块有哪些ftp上传网站之后怎么做
  • 在哪学习建网站豆瓣 wordpress
  • 外包服务公司排名网站seo推广怎么做
  • 网站设计与应用方向论文外贸人才网招聘网
  • 企业做网站etp和源程序互联网公司排名广州
  • 做网站考什么赚钱微信企业网站