Опции задачи



Also

Объединяет спецификаторы Time: и Watch* логическим "ИЛИ" (по умолчанию они объединены логическим "И").

Пример:

#( test-mailbox
\ эта задача будет запускаться каждый час или по "Alt-Ctrl+F12"
Time: 0 * * * * *
Also
WatchHotKey: @^{F12}
Rule: POP3-CHECK: "hostname" "pop3user" "password"    
Action:
    START-APP: e:\win\the bat!\thebat.exe /CHECKALL
)#

AsLoggedUser

Предписывает выполнять задачу "от имени" текущего авторизовавшегося пользователя системы. Задача с опцией AsLoggedUser будет выполнена только если на машине присутствует "залогинившийся" пользователь.

Пример:

#( interactive-job
AsLoggedUser
Time: 0 10 * * * *
Action:
    START-APP: c:\msoffice\winword.exe
)#

Эту опцию следует использовать только если nnCron стартовал в качестве сервиса (от имени пользователя System). Не используйте AsLoggedUser, если вы запускаете nnCron не сервисом, а обычным приложением (см. также Запуск и остановка nnCron).


HyperActive

Предписывает задаче выполняться не только в нормальном режиме, но и в режиме остановки.

Пример:

#( test_hyperactive
HyperActive
Time: */5
Action:
    MSG: "Running in normal and suspended mode!"
)#

LoadProfile

Предписывает загружать пользовательский профиль вместе с запускаемыми процессами (START-APP:, START-APPW:).
При авторизации задачи используйте эту опцию для приложений, которые нуждаются в загрузке профиля ('Outlook Express', 'The Bat!', 'IE' и т. д.).


NoActive

Отключает выполнение задачи
Используется также при составлении задач, которые планируется запускать вручную.


NoDel

Не удалять из кронтаба RunOnce-задачу.
Совместное использование опций RunOnce и NoDel позволяет запускать задачу при каждом перечитывании кронтаба.

Пример:

#( every_crontab_reload
\ задача запускается при каждом перечитывании кронтаба
RunOnce NoDel
Action:
    TMSG: "Crontab was reloaded!" 3
)#


NoLog

Запрещает выводить в лог-файл информацию о выполнении данной задачи.
Удобно использовать со слишком часто срабатывающими задачами или с "секретными" задачами, которые не должны обнаруживать себя записями в лог-файле.


NoRunAs

Отменяет выполнение авторизации, если nnCron настроен на запуск всех задач от имени указанного пользователя (переменная RunAsDefaultUser в nncron.ini).


OnceAHour
OnceADay
OnceAWeek
OnceAMonth

Предписывает запускать задачу только один раз в течение часа (дня/недели/месяца).

Пример:

#( daily-task
\ задача выполняется один раз в день при загрузке системы Time: START-TIME OnceADay Action: START-APP: backup.bat )#

Сколько бы не перезагружался компьютер, вышеприведенная задача будет выполнена только один раз. Можно вводить ограничение по времени:

Time: * 12-16 * * * *
OnceADay

В данном случае задача будет выполнена один раз в день, если компьютер работал с 12:00 по 16:59. (И только один раз, даже если компьютер перезагружался. Этого не добиться при использовании опции RunOnce).

Информация об "отработавших" программах пишется в файл etc\once.txt в домашнем каталоге nnCron.
Иногда может понадобиться "удалить" опцию OnceA* прямо из задания - например, для того, чтобы после перезагрузки системы отсчет времени начался заново. Для этого можно использовать слово CANCEL или слово CLEAR-ONCE, которые "снимают" атрибуты OnceA* с текущего задания.

Пример:

#( test_clear_once
Time: START-TIME
OnceADay
Action:
    START-APP: backup.bat
    \ удаляем опцию 'OnceA*' если существует указанный файл:
    FILE-EXIST: "c:\more_backups.sem"
    IF CLEAR-ONCE THEN
)#

RunMissed
RunMissed: <hh:mm|days>

Иногда задачи могут оказаться просроченными - не выполненными в запланированное время из-за того, что компьютер был выключен или просто не был загружен nnCron. Опция RunMissed предписывает выполнить просроченную задачу "при первой возможности", т. е. сразу после загрузки nnCron. Управление запуском просроченных задач рассмотрено более подробно в соответствующей главе.

Пример:

#( test_missed
\ задача запустится в указанное время
\ или при первой возможности (если в
\ 12:00 nnCron был не загружен) 
RunMissed 
Time: 0 12
Action:
    \ ...
)#

Опция RunMissed: <hh:mm|days> позволяет позволяет явным образом указывать максимальное время ожидания (в часах:минутах или днях), которое может пройти с момента запланированного, но просроченного старта задачи. Если с момента просроченного старта прошло больше времени, чем установлено пользователем, то внепланового запуска просроченной задачи не произойдет.

Пример:

#( test_missed1
\ задача запустится в указанное время или при первой
\ возможности (если в 12:00 nnCron был не загружен
\ и максимальное время ожидания не превысило трех
\ часов тридцати минут) 
RunMissed: 03:30
Time: 0 12
Action:
    \ ...
)#

#( test_missed2
\ задача запустится в указанное время или при первой
\ возможности (если в воскресенье, в 12:00 nnCron был
\ не загружен и максимальное время ожидания не превысило
\ трех дней) 
RunMissed: 3
Time: 0 12 * * 7
Action:
    \ ...
)#

Обратите внимание, что запись RunMissed: 0 равнозначна отсутствию опции RunMissed.

Если вы используете не RunMissed: <hh:mm|days>, a RunMissed, то в качестве значения максимального времени ожидания используется значение переменной nncron.ini DefaultRunMissedTime:, которое (по умолчанию) равно 360 часам, т. е. 15-ти дням.

Включать/выключать опцию RunMissed и устанавливать максимальное время ожидания вы можете прямо из GUI nnCron. Соответствующие чекбоксы и поля ввода есть на диалоговых окнах "Новая задача/Редактировать задачу"

и "Добавить напоминание".

См. также: RunMissed?


RunOnce

Предписывает выполнить задачу только один раз, после чего физически удалить ее из кронтаба.
Удаленные задачи автоматически сохраняются программой в специальный неподключенный кронтаб deleted.tab, который расположен в домашнем каталоге nnCron.
Основная сфера применения - "Напоминание" (Reminder:).


SingleInstance

Предотвращает одновременное выполнение двух и более экземпляров одной задачи. Пока задача с опцией SingleInstance выполняется, ни один следующий экземпляр этой же задачи не сможет стартовать - попытка его запуска будет пресечена.

Предотвратить одновременный запуск нескольких разных задач (как, впрочем, и разных экземпляров одной задачи) можно с помощью слов GET и RELEASE. GET захватывает, а RELEASE отпускает заданный семафор. В качестве параметра используется адрес переменной, который остается на стеке после употребления (выполнения) имени этой переменной. Очередные экземпляры задач будут запущены, но начнут работать только дождавшись, когда предыдущий экземпляр освободит семафор.

Пример:

#( test_task1
\ Сообщения "task1" и "task2" никогда не появятся одновременно.
VARIABLE SEM1
Action:
    SEM1 GET
    MSG: "task1"
    SEM1 RELEASE
)#

#( test_task2
Action:
    SEM1 GET
    MSG: "task2"
    SEM1 RELEASE
)#