Способы запуска задачи

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

Действия описываются в разделе задачи Action:. А что же с условиями выполнения? Какими инструментами располагает пользователь для того, чтобы запустить нужное приложение вовремя? Изнутри самой задачи, т. е. в момент составления задачи, пользователь может контролировать следующие условия:

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



Запуск задачи вручную, пользуясь nnCron GUI

Нет ничего проще. Процедура запуска задачи вручную с помощью nnCron GUI подробно описана здесь.

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

См. примечание.


Запуск задачи из командной строки

Запустите nnCron из командной строки с ключом -run task_name.

nncron.exe -run my_first_task

Указанная задача начнет выполняться. Если в тот момент, когда вы набирали эту команду nnCron уже был загружен, то задача будет выполнена в контексте уже запущенной программы. Если же nnCron не был загружен, то указанная команда запустит nnCron, перечитает кронтабы, запустит нужную задачу и выгрузит nnCron из памяти.

Естественно, для успешного запуска задачи из командной строки необходимо, чтобы указанная задача физически присутствовала в одном из подключенных кронтабов.

См. примечание.

Для выполнения несложных действий бывает удобнее воспользоваться способностью nnCron определять и выполнять форт-слова прямо из командной строки.


Запуск задачи из другой задачи

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

Воспользуйтесь ключевым словом nnCron <task-name> RUN, чтобы раздел Action: внешней задачи выполнился как подпрограмма - в том же потоке, что и остальные ключевые слова запускающей задачи.

Пример:

#( hello
\ ...
Action: MSG: "Hello, friend!"
)#

#( task2
\ ...
Action: hello RUN 
)#

Будьте внимательны: слово 'RUN' запускает только раздел 'Action:' внешней задачи, а не всю задачу целиком!

Если же возникает необходимость запустить внешнюю задачу "целиком" (отдельным потоком, асинхронно) - с авторизацией и проверкой условий запуска (за исключением условий времени - Time:, OnceA* и т. д.), то можно воспользоваться словом <task-name> LAUNCH.

Пример:

#( hello
\ ...
Action: MSG: "Hello, friend!"
)#

#( task2
\ ...
Action: hello LAUNCH
)#

Слово LAUNCH удобно использовать для запуска задач прямо из консоли nnCron.


Запуск задачи в качестве отдельного скрипта

Задачу можно вынести в отдельный файл, после чего запускать этот файл как скрипт (или батч-файл). Чтобы запустить задачу-скрипт, введите в командной строке:

nncron.exe -runfile script_filename

Чтобы запуск задачи-скрипта был успешным, скрипт должен содержать форт-слово main

Пример:

\ --- start of script file ----
: main
MSG: "Hello, WORLD!"
SEND-KEYS-DELAY: 100 100
SEND-KEYS: "$r{DELAY 1000}ping localhost -t{ENTER}"
5000 PAUSE
SEND-KEYS: "^c"
;
\ --- end of script file ------

Примечание: запуская задачу вручную, помните, что тем самым вы принудительно отменяете все условия запуска (Time:, Rule:, Watch*), определенные в задаче. Указание "выполнить задачу вручную" имеет безусловный приоритет над всеми остальными условиями! Если же вы хотите создать задачу, которая бы проверяла определенные условия даже при "ручном" запуске, перенесите условие внутрь раздела Action:. Например, вместо

#( test_rule
Rule: PROC-EXIST: "notepad.exe"
Action:
    MSG: "Notepad exists!"
)#

напишите:

#( test_rule1
Action:
PROC-EXIST: "notepad.exe"
IF 
    MSG: "Notepad exists!"
THEN 
)#

См. также: