Что это и зачем нужно
Данная программа является аналогом утилиты 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.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 запускается в консоли этого пользователя и, естественно, Вам не видны. Что же делать? Все очень просто:
- Вот и все. Заметили разницу? Если нет подсказываю - при установки опции "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).