#!/bin/sh
curDir=$(cd `dirname $0`; pwd)
log() {
echo `date +%F" "%H:%M:%S`: $1 >> $curDir/../../proc/logs/diagnose.log
}
diagnose() {
for ((time=1; time<=$3; time++));do
curl --connect-timeout $1 --max-time $2 http://localhost:5812/rdk/service/app/console/server/diagnose
if [ $? == 0 ]; then
return 0
fi
sleep 10
done
log 'rdk did not respond for '$3' times'
return 1
}
waitForReady() {
time1=$(date +%s -s 'now')
while true
do
sleep 10
diagnose 10 30 1
if [ $? == 0 ]; then
return 0
fi
time2=$(date +%s -s 'now')
delta=$(($time2 - $time1))
if [ $delta -gt 1860 ]; then
return 1
fi
done
}
restartRDK() {
log 'shutting down rdk...'
sh $curDir/shutdown.sh 'do-not-kill-diagnose'
sleep 5
log 'running rdk ...'
sh $curDir/run.sh
}
run() {
waitTimeout=$1
expr $waitTimeout + 0 &> /dev/null
if [ $? != 0 ]; then
waitTimeout=30
fi
log "waiting for rdk to get ready..."
waitForReady
if [ $? != 0 ]; then
log "NOT GOOD! rdk has not been ready since last restart!"
return 1;
fi
log "it seems that rdk is ready for work!"
while true
do
sleep $waitTimeout
log 'diagnosing rdk ...'
diagnose 10 30 3
if [ $? != 0 ]; then
log 'NOT GOOD! rdk did not respond in time, gonna restart it.'
restartRDK
break
fi
done
}
run
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· ASP.NET Core 模型验证消息的本地化新姿势
· 对象命名为何需要避免'-er'和'-or'后缀
· SQL Server如何跟踪自动统计信息更新?
· AI与.NET技术实操系列:使用Catalyst进行自然语言处理
· 分享一个我遇到过的“量子力学”级别的BUG。
· dotnet 源代码生成器分析器入门
· Draw.io:你可能不知道的「白嫖级」图表绘制神器
· ASP.NET Core 模型验证消息的本地化新姿势
· 从零开始:基于 PyTorch 的图像分类模型
· [WPF] 在RichTextBox中输出Microsoft.Extension.Logging库的