Кронтаб-файл 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