Кронтаб-файл cron.tab
"Сердце" nnCron LITE - это кронтаб-файл, в котором хранятся все необходимые программе данные: время старта приложения, периодичность выполнения, имя приложения и параметры его запуска. Во время установки nnCron LITE, в домашнем каталоге программы автоматически создается кронтаб cron.tab. cron.tab - обычный текстовый файл. Он может быть отредактирован в любом доступном текстовом редакторе.
nnCron LITE раз в минуту проверяет дату последней модификации cron.tab и, обнаружив обновление информации, автоматически перечитывает его. Если же вы внесли изменения в кронтаб и не хотите ждать, пока nnCron LITE автоматически перечитает его, вы можете "форсировать" перечитывание кронтабов, набрав в командной строке:
cron.exe -reload
Синтаксис, который применяется в кронтаб-файлах очень прост: для запуска приложения достаточно всего лишь указать в кронтабе время в cron-формате и (через пробел) команду, которую надо выполнить:
<time_in_cron_format> <command>
Комментарии в кронтабах начинаются с символа '#' и продолжаются до конца строки. В кронтабе допускается произвольное количество пустых строк (пустые строки не учитываются парсером при перечитывании кронтаба). Лидирующие пробелы и знаки табуляции тоже игнорируются.
Пример:
# программа 'chime.exe' запускается каждый рабочий день в 12:15 15 12 * * 1-5 d:\tools\chime.exe # указанный pdf-файл автоматически открывается ежедневно # в 12:00 и в 17:00 0 12,17 * * * e:\my documents\perl\re\re.pdf # указанный командный файл запускается каждые пять минут */5 * * * * d:\fido\bat\blstbbs.cmd
Обратите внимание на два момента:
Впрочем, никто не запрещает заключать имена с пробелами в кавычки и явным образом вызывать командный интерпретатор. Работайте так, как вам удобнее:
0 12 * * * "e:\my documents\forth\index.html" 0 8-18 * * 1-5 cmd /c d:\tools\cleanup.bat
Вышеописанный синтаксис полностью совместим с форматом, который использует популярная в мире UNIX утилита cron. В дополнение к стандартному синтаксису, nnCron LITE предлагает пользователю несколько удобных расширений, которые позволяют управлять сохранением информации в лог-файл, запускать полноценные скрипты, написанные на языке Форт и управлять запуском "просроченных" задач.
Управление сохранением информации в лог-файл
Как вы помните, синтаксис кронтаб-файла таков:
<time_in_cron_format> <command>
Если перед командой вы укажете символ тильды '~', то nnCron LITE не будет сохранять информацию о запуске этой команды в лог-файл. Обычно это может понадобиться, когда команда стартует очень часто - раз в несколько минут и "захламляет" лог-файл:
<time_in_cron_format> ~<command>
Примеры:
# информация о запуске reminder.bat записывается в лог-файл 0 * * * * c:\test\reminder.bat # информация о запуске reminder.bat не записывается в лог-файл */2 * * * * ~c:\test\reminder1.bat
Запуск скриптов, написанных на языке программирования Forth
С помощью другого символа - знака восклицания ('!') вы можете запускать в качестве команды любые форт-слова, что дает возможность выполнять скрипты произвольной сложности, написанные на языке программирования Форт (SP-Forth).
<time_in_cron_format> !<любые слова форта до конца строки>
Этот вопрос рассмотрен подробнее в главе nnCron LITE и язык программирования Форт.
Управление запуском "просроченных" задач
Иногда задачи могут оказаться "просроченными" - не выполненными в указанное время из-за того, что компьютер был выключен или просто не был загружен nnCron LITE. Если вы хотите, чтобы просроченная задача выполнилась "при первой же возможности", поставьте символ @ перед полем "вермя в крон-формате":
@<time_in_cron_format> <command>
Этот вопрос рассмотрен подробнее в главе Управление запуском "просроченных" задач.
Использование переменных окружения
nnCron LITE умеет прямо в кронтаб-файле задавать локальные переменные окружения (environment variables). Локальные переменные окружения (т. е. переменные, которые доступны только программам, запущенным из nnCron LITE), определяются с помощью слова SET. Работа с переменными окружения рассмотрена подробнее в соответствующей главе.
Задавая команду (и в конструкции SET), вы можете использовать предопределенные переменные nnCron LITE.
Пример:
30 9 * * * %COMSPEC% /c d:\tools\my_bat.bat 0 12 * * 1-5 d:\tools\maintain.bat %DD%-%MMM%-%YYYY%.log