Планирование сценария оболочки каждый день в 13 CET без crontab

Я разрабатываю скрипт оболочки ksh на сервере AIX, который должен выполняться точно в 13:00 каждого дня. У меня нет разрешения на использование CRONTAB, AT, WATCH, inotify, date -d и т.д. Единственный вариант - заставить скрипт постоянно циклиться и работать в фоновом режиме.

while [ $(date +%H%M) != 1300 ]
do
actions
sleep 60
done

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

-1
22.09.2016, 18:28
1 ответ

Я делал это только в perl, и никогда не использовал ksh, но я не вижу причин, почему это не должно быть возможно, но я сделал это примерно так (возможно, это не валидный код на любом языке):

while(true)
    starttime=`date +%s`
    actions
    sleep starttime+24*60*60-`date +%s`
end

Это только заставляет действия запускаться каждый 24-й час. Я думал, что для того, чтобы заставить его запускаться в 13:00, нужно просто добавить цикл в начале, который будет ждать до 13:00. Подумав об этом, может быть лучше заменить starttime+24*60*60 на что-то вроде date -d "13:00 завтра" +%s.

0
28.01.2020, 05:13

Теги

Похожие вопросы