2014-02-03 3 views
0

В настоящее время у меня есть сценарий, запускаемый каждые 6 часов (0000, 0600, 1200, 1800), который перезапускает сервер minecraft, работающий на отдельном экране GNU.6-часовой обратный отсчет с использованием bash

Я хотел бы создать скрипт, который работает в течение часа, который покажет оставшееся время для следующего перезапуска.

I.E .: После перезапуска каждый час сценарий отправляет оставшееся время на сеанс экрана, который будет интерпретировать и печатать его на сервере.

В настоящее время почасовой сценарий выглядит следующим образом, но у меня есть чувство, что я буду работать в вопросы после 6PM:

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' 

Любой помощь ценится, благодаря

+0

Вам не нужно 'echo':' ЧАС = $ (($ (дата +% H) - 6)) 'будет выполнять то же самое. – chepner

ответ

0

Не знаю, почему я не сделал думать об этом раньше, но простой, если заявление решить мою проблему:

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' 
Смежные вопросы