- PVSM.RU - https://www.pvsm.ru -

Разворачиваем cron в Windows

Стандартный планировщик Windows штука мощная, но столкнулся с проблемой, которая не позволила мне легко им пользоваться в «домашнем» выпуске Windows. Пришлось установить в систему настоящий cron. Ни капли не пожалел!
Как к этому пришёл, и что из этого поучилось под катом.

Пользователь без прав

Всё началось с того, что я хотел запланировать задание. Нужно было каждую минуту выполнять простой cmd-скрипт, который подготавливал окружение и запускал некий скрипт на Python.
Так как машина, на которой выполняется задание не основная рабочая, то нужно было выполнять задание, даже когда пользователь не зашёл в систему. Для этого был выбран режим:
Разворачиваем cron в Windows
При сохранении задания планировщик предупредил, что для указанного пользователя нужно разрешить «Вход в качестве пакетного задания» [1]. Для этого предлагается изменить политику безопасности [2]. Однако сделать это не удалось, так как в «домашней» версии Windows нет оснастки для управления политикой безопасности (буду благодарен за подсказку альтернативного решения).
От запутанного конфигурирования стало как-то совсем грустно и захотелось мне иметь такой же простой и понятный инструмент как cron…

Cronизация Windows

Установка cron на Windows оказалась вполне реализуемой затеей. Я не стал искать специальной версии cron для Windows (поделитесь, если кто знает), а обратился сразу к Cygwin [3]. Кроме стандартного пакета, я выбрал:
Разворачиваем cron в Windows
С пакетом cron всё понятно. Пакет cygrunsrv позволяет запускать разные программы как службы. После установки Cygwin можно переходить к конфигурированию cron.

Конфигурирование службы сron в Windows

Теперь переходим к самому ответственному шагу. Запускаем «Cygwin Terminal» с правами администратора и набираем команду:

> cron-config
Cron is already installed as a service under account LocalSystem.
Do you want to install the cron daemon as a service? (yes/no) yes
Enter the value of CYGWIN for the daemon: [ ] ntsec
Do you want to start the cron daemon as a service now? (yes/no) yes

Про ntsec можно подробнее почитать здесь [4].

Готово. Можно давать задания. Если служба не пошла, попробуйте её стартануть вручную:

> net start cron

Теперь открываете crontab и записываете задания (по умолчанию vi):

> crontab.exe -e

Можно «залить» задание через echo:

> echo "*/5 * * * * /cygdrive/c/crons/task.bat" >> C:cygwinvarcrontabs[Username]

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

Автор: deko


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/windows/13128

Ссылки в тексте:

[1] «Вход в качестве пакетного задания»: http://www.folloffer.com/wrap/agtzfmZvbGxvZmZlcnIPCxIHV3JhcHBlchjR9wcM/

[2] изменить политику безопасности: http://www.folloffer.com/wrap/agtzfmZvbGxvZmZlcnIPCxIHV3JhcHBlchihhwgM/

[3] Cygwin: http://www.folloffer.com/wrap/agtzfmZvbGxvZmZlcnIPCxIHV3JhcHBlchjxlggM/

[4] здесь: http://www.folloffer.com/wrap/agtzfmZvbGxvZmZlcnIPCxIHV3JhcHBlchjZnggM/