如何编写循环检测tardis服务状态直至达标或达到次数上限
Tardis服务状态检测循环脚本
补丁更新后需验证Tardis服务是否正常运行,由于curl localhost:10100/status命令无论服务状态如何都会返回退出码0,因此需要通过返回的JSON内容判断服务状态——正常状态的JSON必须包含"description":"Tardis service is fully functional."和"name":"Running"。以下是带重试次数限制的检测循环脚本:
Bash实现示例
#!/bin/bash # 可配置参数 MAX_RETRIES=10 # 最大重试次数 RETRY_INTERVAL=5 # 每次重试间隔(秒) STATUS_ENDPOINT="http://localhost:10100/status" retry_count=0 while [ $retry_count -lt $MAX_RETRIES ]; do # 获取服务状态响应 status_response=$(curl -s "$STATUS_ENDPOINT") # 检查响应中是否包含两个正常状态标识 if echo "$status_response" | grep -q '"description":"Tardis service is fully functional."' && \ echo "$status_response" | grep -q '"name":"Running"'; then echo "✅ Tardis服务已恢复正常运行" exit 0 fi # 重试计数递增,提示当前状态 retry_count=$((retry_count + 1)) echo "⚠️ Tardis服务状态异常,正在重试 ($retry_count/$MAX_RETRIES)" sleep $RETRY_INTERVAL done # 达到最大重试次数仍未恢复 echo "❌ 已达到最大重试次数,Tardis服务未恢复正常" exit 1
脚本说明
- 可根据实际需求调整
MAX_RETRIES(最大重试次数)和RETRY_INTERVAL(重试间隔) - 使用
curl -s静默获取响应,避免多余输出干扰判断 - 通过
grep -q静默检查JSON中的关键字段,确保两个条件同时满足才判定服务正常 - 脚本最终返回对应退出码,方便集成到自动化部署流程中做后续判断
内容的提问来源于stack exchange,提问作者Andres Trujillo
相关产品推荐
相关产品推荐

