Вы можете использовать команду date для динамической настройки продолжительности операции сна.
Пример
now() { date '+%s'; }
next() { date -d $(date -d "1 hours" '+%H:00:00') '+%s'; }
( while : ; do echo "Your Tasks Here" ; sleep $(next) - $(now) ; done ) $
Внутренний формат даты следующей функции ()структурирован для запуска в час. Если вы хотите, чтобы он запускался каждые пятнадцать минут, вы можете настроить его следующим образом.
next() { date -d $(date -d "15 minutes" '+%H:%M:00') '+%s'; }
См. также:Команда даты Linux, поиск секунд до следующего часа
Примечание. :Уничтожение приведенного выше сценария немного раздражает из-за того, что в фоновом режиме выполняется операция сна. Уничтожьте с помощью PID или не думайте, что -не заземлит работу шлейфа.