Задача (описание)

Задача - это именованная синтаксическая конструкция, предназначенная для описания работы, которую nnCron должен произвести по указанию пользователя. В рамках задачи описывается как сама работа (запуск программ, операции с файлами, демонстрация сообщений на экране и т. д.), так и разнообразные условия, при соблюдении которых эта работа должна быть произведена (время, наличие/отсутствие указанных файлов, наличие/отсутствие носителя в дисководе и т. д.).

Каждой задаче присваивается уникальное имя, которое идентифицирует задачу и облегчает дальнейшую работу с ней. Имя задачи не должно содержать пробелов.

Как следует из раздела, посвященного расширенному режиму, описание каждой задачи начинается с конструкции:

#( <имя_задачи>

Встретив эту последовательность, парсер кронтаба сразу переключается в расширенный режим. Имя задачи может содержать не только буквы латинского алфавита (кроме пробела), но и буквы вашей локальной раскладки клавиатуры (например, кириллицы). Длина имени ограничена 255-ю знаками. Чтобы зафиксировать конец описания задачи используется последовательность:

)#

Она переключает парсер кронтаба обратно в классический режим.

В любом месте внутри каждой задачи можно использовать специальный знак комментария до конца строки, который принят в языке Форт: \ (обратный слеш). Не забывайте ставить пробел после знака комментария, поскольку он тоже является ключевым словом nnCron.

Пример:

#( first_task
    \ это моя первая самостоятельная задача
)#

С точки зрения синтаксиса этот пример вполне корректен. Единственный его недостаток - он не имеет никакой функциональности, поскольку тело задачи first_task содержит только строку-комментарий.

Как же выглядит полнофункциональная задача? Из чего она состоит?

Прежде всего, задача может (и должна) содержать раздел, описывающий действия, которые этой задаче предписано произвести. Такой раздел обозначается ключевым словом Action:.

Пример:

#( first_task
\ это моя первая самостоятельная задача
Action:     \ действие
    \ воспроизводим мультимедиа-файл
    PLAY-SOUND: c:\winnt\media\chimes.wav
)#

Перед разделом Action: могут в произвольном порядке располагаться другие составляющие задачи:

В общих чертах, среднестатистическая задача выглядит примерно так:

#( имя_задачи
[\ комментарий до конца строки]
[опции]
[авторизация]
[спецификация времени (Time:)]
[спецификация события]
[условия запуска задачи (Rule:)]
действия (Action:)
    \ ... выполняем работу
)#

Вот немного доработанная версия нашей первой задачи. Мы добавили опцию NoLog (не фиксировать выполнение задания в лог-файле nnCron) и спецификатор времени Time: */15 * * * 1-5 * (выполнять каждые пятнадцать минут по рабочим дням):

#( first_task
\ это моя первая самостоятельная задача
NoLog                  \ опция
Time: */15 * * * 1-5 * \ спецификатор времени
Action:                \ действие
    \ воспроизводим мультимедиа-файл
    PLAY-SOUND: c:\winnt\media\chimes.wav
)#

Вопросы, связанные с условиями и способами запуска задач подробно рассмотрены в разделе "Запуск задачи".