Как лучше всего запланировать задачу, которая будет выполнена через годы? Например, выполнить сценарий через 4 года.
Является ли cron лучшим методом для этого?
решение1
Вы можете использовать at
:
$ at 10am Jul 31 2030
warning: commands will be executed using /bin/sh
at> echo Hello
at> <EOT>
job 2 at Wed Jul 31 10:00:00 2030
$ atq
1 Sun Jul 31 10:00:00 2030 a user
$ atrm 1
решение2
Любая компьютерная система, которая будет работать достаточно немодифицированной после четырех лет, так что скрипт останется действительным без модификации, является в некоторой степени статичной. Любая система планирования, которая предполагает, что один ящик будет по-прежнему выполнять ту же роль так много времени спустя, является довольно оптимистичной. Отказ жесткого диска или другие проблемы могут привести к тому, что вы, вероятно, узнаете, справляются ли ваши резервные копии с сохранением "переходных" заданий.
Вероятно, было бы более надежно вместо этого посмотреть на «как мне проверить, была ли запущена задача обслуживания X таким образом, что срок жизни данных был продлен еще на N месяцев с текущего момента»; например, все домены обновлены, сертификаты SSL не истекают и т. д. Затем вы можете запускать задание ежедневно, еженедельно, ежемесячно или с какой-либо другой частотой, большей, чем «ежегодно». Это означает, что код будет запущен, и вы будете уверены, что он будет запущен. Особенно, если инструмент где-то регистрирует свой успех.
Если все остальное не сработает, может быть полезен общий календарь отдела с кучей напоминаний, отправляющий электронную почту. Вы можете быть относительно уверены, что если календарь будет заменен или перенесен в The Cloud или куда-то еще, кто-то возьмет на себя усилия по переносу всех событий, чтобы VIP-персонам не пришлось ничего вводить заново. Таким образом, ваше напоминание будет перенесено «бесплатно», и никому не придется помнить об этой задаче, которая выполняется только раз в четыре года.