使用bash进行6小时倒计时

时间:2014-02-03 19:32:44

标签: crontab minecraft gnu-screen

我目前有一个脚本设置为每6小时运行一次(0000,0600,1200,1800),重新启动在分离的GNU屏幕中运行的Minecraft服务器。

我想创建一个小时运行的脚本,它将显示下次重启的剩余时间。

I.E。:重新启动后,脚本每隔一小时将剩余时间发送到屏幕会话,该会话将解释并将其打印到服务器。

目前每小时的脚本看起来像这样,但我有一种感觉,我会在下午6点后遇到问题:

HOUR=`echo $(($(date +%H) - 6))`
tleft=`echo $((12 % $HOUR))`
screen -X setenv remain "$tleft" 
screen -X readbuf $remain
screen -x minecraft -X eval 'stuff "say The Server will restart in $remain hours"\015'
screen -x minecraft -X eval 'stuff "save-all"\015'

感谢任何帮助,谢谢

1 个答案:

答案 0 :(得分:0)

不知道为什么我之前没有想到这个,但是简单的if语句解决了我的问题:

hour=`echo $(date +%I)`

if [[ $hour -lt 6  ]];
then
    tleft=$((6 - $hour))
else
    tleft=$((12 - $hour))
fi

screen -X setenv saystring "Server will restart in $tleft hour(s)"
screen -X readbuf $saystring
screen -x minecraft -X eval 'stuff "say $saystring"\015'
screen -x minecraft -X eval 'stuff "save-all"\015'