Cron NT

Что это и зачем нужно

Данная программа является аналогом утилиты cron для платформы Windows NT (версии 4.0). Задачей утилиты является запуск программ по времени. Инсталляция программе не требуется, единственно необходимо зарегестрировать WinNT-сервис с помощью команды "CronNT.exe - install".При написании был сделан упор на легкость прехода с UNIX-версии на версию для Windows, для этого формат файла crontab был сохранен.

Как оно работает

После получения архива с программой и его распаковки Вы получаете 3 файла: CronNT.exe (собственно Cron и есть), CronNT.tab и CronNT.ini (примеры файлов с конфигурацией).

Для инсталляции утилиты необходимо запустить CronNT.exe с параметром "-install". После этого в окне Services появится новый сервис (Cron NT) и появится возможность управлять его запуском.

cronnt

После запуска сервиса каждую минуту проверяются файлы CronNT.ini и CronNT.tab (аналог файла crontab в UNIX-клонах) и в случае необходимости запускаются прописанные там программы.

Параметры командной строки

Cron for Windows NT ver 1.02. Copyright 1999 by SAN Software.
This is a simple NT service looks-like UNIX cron.
You need to copy CronNT.exe and CronNT.tab to one directory
and run: "CronNT.exe -install"
Enjoy! :)
Command line parameters:

CronNT -install to install the service
CronNT -remove to remove the service
CronNT -debug to run as a console app for debugging

Форматы конфигурационных файлов

CronNT.tab

Файл содержит текстовые строки, описывающие запускаемы программы и комментарии. Комментарии начинаются с символов ";" или "#" и заканчиваются вместе со строкой (\r\n). Формат "значащих" строк приведен ниже:

M H D WD ProgramName

Где:

M, H, D, WD - числа, обозначающие, соответсвенно: Минуты (0..60), Часы (0..23), Дни (1..31), Дни недели (0..6); Формат этих чисел также подразумевает некоторые выражения:

  • x-y - диапазон чисел от x до y включительно;
  • x,y - перечисление чисел или диапазаонов (a,b-c,d-e);
  • * - все числа;
  • x/y - условие, что x делится на y без остатка, причем в случае перечислений это услове действует на ВСЮ запись, т.е. запись a,b-c,d-e/z означает: "выполнять действие если время t равно а ИЛИ b <= t <= c ИЛИ d <= t <= e, но ТОЛЬКО если t делится без остатка на z".

ProgramName - имя .exe или .bat файла для запуска. Допускается этот параметр заключать в кавычки (это удобно если имя содержит пробелы или параметры командной строки), например: "Program Name" или "Program Name -Param1 -Param2".

Примеры:

00
00-03,06-08
*
*
some_script.bat
запустить данную программу каждый час в 00 минут в промежутке от 0 до 3 и от 6 до 8 часов каждый день.
*/15
*
*
*
some_script.bat
запускать программу some_script.bat каждые 15 минут (0, 15, 30, 45) каждый час каждый день.
0-10, 20-30,50-60/6
*
*
6
some_script.bat
запускать some_script.bat в субботу каждый час в 0,6,24,30,54 минуты.
0
0
13
5
some_script.bat
запускать some_script.bat каждую пятницу 13-е числа в 0 часов 0 минут.

CronNT.ini

Простой Windows .ini-файл. Является дополнением к CronNT.tab и (пока) содержит только одну секцию [Statrup], в которой содержаться записи вида "RunX=ProgramName", где X - число. Программы из этой секции загружаются непосредственно после загрузки сервиса.

FAQ - вы мне писали...

  • А-А-А!!! Все пропало, шеф, ничего не работает!!! В логе появляются строчки "success", но ничего не происходит. Что делать?
  • Править дрйвер руки.sys. А если серьезно, то ничего страшного не происходит, программы на самом деле запускаются, только их не видно. Дело в том, что сервис работает под пользователем SYSTEM (загадочный пользователь, ни разу его не видел). Так вот, все что запускает Cron запускается в консоли этого пользователя и, естественно, Вам не видны. Что же делать? Все очень просто:

cronnt2cronnt3

  • Вот и все. Заметили разницу? Если нет подсказываю - при установки опции "Allow Service to Iteract with Desktop" все, что запустит сервис, будет видно на экране.
  • Поясните, как CronNT читает CronNT.tab - при каждой загрузке/пуске или каждую минуту (могу ли я редактировать .tab и воспримутся ли изменения?).
  • Файл перечитывается каждую минуту, поэтому редактировать его можно и изменения воспримутся (всеобщее ликование).
  • В CronNT.tab прописан на запуск файл start.bat, следующего содержания:
    @echo off
    MyProgram.exe

    но ничего не происходит, хотя в режиме debug все нормально. В чем дело?
  • Дело все в том, что сервис работает под пользователем SYSTEM (см. выше), у которого совершенно другие настройки и переменные окружения (PATH тоже свой). Поэтому он просто не может найти Program.exe. Для решения этой проблемы необходимо ПОЛНОСТЬЮ указывать все пути в bat-файлах.

Заключение

Вот и все пока, пока. В настоящее время доступна версия 1.02, скачать ее можно здесь (21K).