如何保持linux机器关闭固定的时间

问题描述 投票:0回答:1

我试图模拟一个测试用例的条件是Linux服务器停机10分钟。我知道如何关闭机器但如果我发出reboot命令它会自动重启。目前我正在使用以下方式将target保持600秒。但它并不健壮,因为有时它导致目标在另一次重启之前部分出现。导致错误的结果。

target="active001"
secs=600  ;SECONDS=0 ; 
while (( SECONDS < secs )); 
do
  ssh ${target}  reboot
  sleep 1;
done
linux bash
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.