我正在尝试模拟Linux服务器停机10分钟的测试用例的条件。我知道如何关闭计算机,但是如果发出reboot
命令,它将自动重新启动。目前,我正在使用以下方式将target
保持关闭状态600秒。但是它并不健壮,因为有时它会导致目标在再次重新启动之前部分出现。导致错误的结果。
target="active001"
secs=600 ;SECONDS=0 ;
while (( SECONDS < secs ));
do
ssh ${target} reboot
sleep 1;
done
答案 0 :(得分:1)
#!/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