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

时间:2019-04-03 14:50:58

标签: linux bash

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

target="active001"
secs=600  ;SECONDS=0 ; 
while (( SECONDS < secs )); 
do
  ssh ${target}  reboot
  sleep 1;
done

1 个答案:

答案 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