我试图模拟一个测试用例的条件是Linux服务器停机10分钟。我知道如何关闭机器但如果我发出reboot
命令它会自动重启。目前我正在使用以下方式将target
保持600秒。但它并不健壮,因为有时它导致目标在另一次重启之前部分出现。导致错误的结果。
target="active001"
secs=600 ;SECONDS=0 ;
while (( SECONDS < secs ));
do
ssh ${target} reboot
sleep 1;
done
#!/bin/bash
# ...<3600
STATUS="active001"
TARGET_SECOND="600"
TARGET_TIME=$(($(date +%M)+$TARGET_SECOND))
TARGET_TIME_UP=$(($(date +%s)+$TARGET_SECOND))
START_TIME=$(date +%s)
printf "\033[01;35mStarting Schedhule Reboot if need... \033[01;32mInterval ($(date -d @$TARGET_TIME +%M) Minute)\033[01;00m\n"
while true; do
TIME_NOW=$(date +%s)
DELTATIME=$(($TARGET_TIME_UP - $TIME_NOW))
TIMELAPSE=$(date -ud "@$DELTATIME" +'%H:%M:%S')
if [ $TIME_NOW = $TARGET_TIME_UP ];then
#printf "\nRunning script command...\n"
ssh ${STATUS} reboot
#end loop or other option
break
fi
printf "\r$(date -d @$TIME_NOW +%H:%M:%S) \033[01;32mReboot Execute on: \033[01;32m$(date -d @$TARGET_TIME_UP +%H:%M:%S)\033[00;00m [ ELAPSED : $TIMELAPSE ] "
sleep 1
done