Запланируйте запуск скрипта оболочки каждый день в 13:00 по центральноевропейскому времени без crontab

Запланируйте запуск скрипта оболочки каждый день в 13:00 по центральноевропейскому времени без 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

Я делал это только в 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 tomorrow" +%s.

Связанный контент