Управление запуском просроченных задач
Помимо возможности запускать любые задачи в указанное время и с заданной периодичностью, nnCron LITE предоставляет пользователям возможность управлять запуском т. н. "просроченных" задач (в мире UNIX похожую функциональность обеспечивает программа anacron - специальное дополнение к "классическому" крону).
Просроченная задача - это задача, которая должна была выполниться в запланированное время, но этого не произошло, потому что компьютер в этот момент был выключен или nnCron LITE не был загружен. Чтобы гарантировать запуск важных задач на периодически выключающихся компьютерах, существует специальный синтаксис, который позволяет задавать время выполнения задачи примерно так: "запускать задачу в запланированное время или при первой же возможности, если в запланированное время задачу выполнить не удалось". При каждом перечитывании кронтаба nnCron LITE проверяет - не появились ли "просроченные" задачи и сразу запускает таковые, если их удалось обнаружить.
Вот как выглядит этот синтаксис (добавляем символ @ перед полем времени в крон-формате):
@<time_in_cron_format> <command>
Если вы хотите создать задачу, которая должна выполняться ежедневно в 11:00 или при первой же возможности, если это время уже просрочено, добавьте в кронтаб строку:
@0 11 * * * c:\your_app.exe
Разберем еще один пример. Предположим, пользователь еженедельно (по воскресеньям в 23:30) запускает утилиту cleanup.exe, которая очищает локальные диски от временных файлов. Вот как выглядит эта задача в его кронтабе:
30 23 * * 7 с:\utils\cleanup.exe
В случае, если в 23:30 ближайшего воскресенья компьютер окажется выключенным, пользователю прийдется ждать следующего запуска целую неделю. Чтобы избежать такого длительного ожидания, пользователь может включить обработку просроченных задач:
@30 23 * * 7 с:\utils\cleanup.exe
Теперь, если задача не сможет стартовать в ближайшее воскресенье в 23:30, то она запустится "при первой же возможности", когда пользователь в следующий раз включит компьютер, например, в понедельник, в 08:00.
nnCron LITE хранит информацию, необходимую для корректной обработки просроченных задач, в файле etc\taskinfo.txt. Пользователю также предоставляется возможность задать максимальное время ожидания (в часах и минутах), которое может пройти с момента запланированного, но просроченного старта задачи. Для этого используется переменная cron.ini DefaultRunMissedTask:. Если с момента просроченного старта прошло больше времени, чем установлено в переменной DefaultRunMissedTask:, то внепланового запуска просроченной задачи не произойдет.