Время на прочтение2 мин
Количество просмотров76K
Стандартный планировщик Windows штука мощная, но столкнулся с проблемой, которая не позволила мне легко им пользоваться в «домашнем» выпуске Windows. Пришлось установить в систему настоящий cron. Ни капли не пожалел!
Как к этому пришёл, и что из этого поучилось под катом.
Пользователь без прав
Всё началось с того, что я хотел запланировать задание. Нужно было каждую минуту выполнять простой cmd-скрипт, который подготавливал окружение и запускал некий скрипт на Python.
Так как машина, на которой выполняется задание не основная рабочая, то нужно было выполнять задание, даже когда пользователь не зашёл в систему. Для этого был выбран режим:
При сохранении задания планировщик предупредил, что для указанного пользователя нужно разрешить «Вход в качестве пакетного задания». Для этого предлагается изменить политику безопасности. Однако сделать это не удалось, так как в «домашней» версии Windows нет оснастки для управления политикой безопасности (буду благодарен за подсказку альтернативного решения).
От запутанного конфигурирования стало как-то совсем грустно и захотелось мне иметь такой же простой и понятный инструмент как cron…
Cronизация Windows
Установка cron на Windows оказалась вполне реализуемой затеей. Я не стал искать специальной версии cron для Windows (поделитесь, если кто знает), а обратился сразу к Cygwin. Кроме стандартного пакета, я выбрал:
С пакетом 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 можно подробнее почитать здесь.
Готово. Можно давать задания. Если служба не пошла, попробуйте её стартануть вручную:
> net start cron
Теперь открываете crontab и записываете задания (по умолчанию vi):
> crontab.exe -e
Можно «залить» задание через echo:
> echo "*/5 * * * * /cygdrive/c/crons/task.bat" >> C:\cygwin\var\cron\tabs\[Username]
Теперь перегрузите компьютер и посмотрите, как замечательно выполняются задания без входа в систему.
nnCron
для Windows
nnCron — это мощный планировщик/скриптер/менеджер автоматизации. Он пригодится всем, кто хотел бы автоматизировать большую часть рутинной компьютерной работы.
Помимо традиционной для планировщика способности запускать в указанное время программы, «напоминалки» и открывать документы, nnCron умеет:
- запускать произвольные программы как сервисы
- запускать задачи «от имени» указанных юзеров
- выключать, «усыплять» и «будить» компьютер в заданное время
- отображать/скрывать/закрывать/убивать/сворачивать/разворачивать и прятать в системный трей заданные окна
- менять размер и местоположение окон, а также изменять их «прозрачность»
- работать с клипбордом, файлами и реестром
- эмулировать клавиатурный ввод и операции с мышкой
- синхронизировать системное время
- прерывать работу любых запущенных процессов
- отслеживать файлы, флаги, окна, процессы, движения мыши, время простоя компьютера, клавиатурные шорткаты, выход в онлайн/оффлайн, появление диска в драйве, наличие хоста в сети (пинг), изменение удаленного ресурса по http-протоколу, количество свободного места на диске и многое другое
nnCron позволяет использовать в задачах скриптовые языки VBScript и JScript, а также регулярные выражения. Может выполнять произвольные программы на языке Форт (SP-Forth), расширяется за счет плагинов.
Эти и другие возможности nnCron, а также примеры его использования подробно описаны в справочной системе на русском языке.
ТОП-сегодня раздела «Автоматизация»
OP Auto Clicker 3.0
Бесплатный полноценный автокликер с двумя режимами работы — с динамическим…
AutoHotkey 2.0.15
AutoHotkey — приложение для автоматизации процессов до одного клика. Настраивайте клавиатуру и…
Free Mouse Auto Clicker 3.8.6
Free Mouse Auto Clicker — утилита для автоматического срабатывания левой или правой кнопки мышки через через заданные промежутки времени…
Отзывы о программе nnCron
Denis про nnCron 1.91 [06-07-2018]
извините, но с внятной документацией у nncron жесточайшие проблемы. Только долго и нудно гуглить.. Сложности на пустом месте. Зачем так делать — не понятно. С удовольствием бы не пользовался
6 | 7 | Ответить
NN1 про nnCron 1.91 [03-03-2014]
Под Windows 7 не запускается.
7 | 13 | Ответить
Olchik про nnCron 1.91 [05-03-2012]
Очень полезная программа.
6 | 6 | Ответить
TT про nnCron 1.91 [02-07-2011]
http://www.nncron.ru/register_ru.shtml
6 | 7 | Ответить
V1R-3X про nnCron 1.91 [06-03-2009]
Офигенная прога!
7 | 6 | Ответить
Provide feedback
Saved searches
Use saved searches to filter your results more quickly
Sign up
Cron является популярным инструментом для автоматизации задач в Unix-подобных системах. Однако, если вы используете Windows Server 2019, то вам может понадобиться аналогичный инструмент, который называется «Планировщик задач». В этой статье мы рассмотрим, как запустить PHP скрипт через Планировщик задач в Windows Server 2019.
Шаг 1: Установка PHP
Первым шагом является установка PHP на ваш сервер. Вы можете скачать последнюю версию PHP с официального сайта — https://windows.php.net/download/
После установки проверьте, что PHP работает, выполнив команду php -v в командной строке.
Шаг 2: Создание PHP скрипта
Создайте PHP скрипт, который вы хотите запустить через Планировщик задач. Например, создайте файл с именем myscript.php со следующим содержанием:
<?php
echo "Hello World!";
?>
Сохраните этот файл в удобном для вас месте на сервере.
Шаг 3: Создание задачи в Планировщике задач
Откройте Планировщик задач, нажав Win+R и введя команду taskschd.msc.
Нажмите правой кнопкой мыши на «Планировщик задач» и выберите «Создать задачу».
На вкладке «Общие» укажите имя для задачи и описание. Выберите опцию «Запускать задачу при входе в систему» или «Запускать задачу по расписанию», если вам нужно запустить задачу по расписанию.
На вкладке «Действия» выберите «Новое» и укажите путь к исполняемому файлу php.exe. Этот файл находится в папке, куда вы установили PHP. Добавьте аргументы командной строки для указания пути к вашему скрипту. Например, «C:\php\php.exe» «C:\myscript.php».
На вкладке «Триггеры» выберите тип триггера, который вам нужен. Например, если вы хотите запустить задачу каждый день в 8:00 утра, выберите «Ежедневно» и укажите время.
На вкладке «Условия» вы можете указать дополнительные условия для запуска задачи. Например, вы можете указать, что задача должна запускаться только при подключении к определенной сети.
Шаг 4: Проверка задачи
После того как вы создали задачу, вы можете проверить ее работу, запустив ее вручную. Для этого откройте Планировщик задач, найдите вашу задачу, щелкните правой кнопкой мыши на ней и выберите «Запуск».
Если задача успешно запускается, то вы должны увидеть вывод скрипта в консоли. Если что-то пошло не так, то вы увидите сообщение об ошибке.
Шаг 5: Исправление проблем
Если задача не запускается, то вам необходимо проверить настройки задачи и исправить проблему. Ниже приведены некоторые общие проблемы, которые могут возникнуть при запуске PHP скрипта через Планировщик задач.
— Неправильный путь к исполняемому файлу PHP. Убедитесь, что вы указали правильный путь к php.exe в настройках задачи.
— Неправильный путь к скрипту PHP. Убедитесь, что вы указали правильный путь к своему скрипту в настройках задачи.
— Неправильная версия PHP. Убедитесь, что вы используете подходящую версию PHP для вашей системы.
— Недостаточно прав. Убедитесь, что у пользователя, который запускает задачу, достаточно прав для выполнения PHP скрипта.
— Неправильные аргументы командной строки. Убедитесь, что вы указали правильные аргументы командной строки в настройках задачи.
Шаг 6: Автоматизация других задач
Планировщик задач позволяет автоматизировать множество других задач, кроме запуска PHP скриптов. Например, вы можете использовать его для резервного копирования файлов, очистки временных файлов, обновления базы данных и многих других задач.
Шаг 7: Заключение
В этой статье мы рассмотрели, как запустить PHP скрипт через Планировщик задач в Windows Server 2019. Мы рассмотрели шаги установки PHP, создания PHP скрипта, создания задачи в Планировщике задач, проверки задачи и исправления проблем. Мы также упомянули о том, что Планировщик задач позволяет автоматизировать множество других задач. Если вы используете Windows Server 2019 и нуждаетесь в автоматизации задач, то Планировщик задач является очень полезным инструментом.
There are two different ways for creating a Moodle Cron process trigger on Windows operating systems.
Moodle cron package
Use the Moodle Cron package. The simplest way is to use this little package MoodleCron-Setup.exe, which makes this whole thing very easy by installing a small Windows service. Run it and forget about it!
You need to disable Cron execution via command line only (under Site administration → Security → Site security settings) to use this.
wget or php scheduled task
If you prefer to use the built-in Windows Scheduler or are having trouble with moodle-cron-for-windows package, you can use wget for windows or php from the command line and setup a scheduled task. Just follow these steps:
-
- Choose either the php.exe/php-win.exe (command line binary) or wget
-
- The php.exe or php-win.exe binary (for PHP version 5 or later) is installed in your php folder (e.g. c:\php) will give you better performance when running the cron script.
- If you want to use wget, download a compiled version of wget for windows from the native GNU Win32 ports (http://unxutils.sourceforge.net/), from Heiko Herold’s wget for windows page (http://xoomer.virgilio.it/hherold/) or Bart Puype’s wget for windows page (http://users.ugent.be/~bpuype/wget/). If you use Heiko Herold’s package, copy all of the .DLL files to your C:\Windows\system32 directory. Copy the wget.exe file to c:\windows (this makes sure wget is always in the search path).
- Setup a Scheduled Task.
- — Go to Start >> Control Panel >> Scheduled Tasks >> Add Scheduled Task.
- — Click «Next» to start the wizard:
- — Click in the «Browse…» button and browse to c:\php\php.exe or c:\windows\wget.exe and click «Open»
- — Type «Moodle Cron» as the name of the task and select «Daily» as the schedule. Click «Next».
- — Select «12:00 AM» as the start time, perform the task «Every Day» and choose today’s date as the starting date. Click «Next».
- — Enter the username and password of the user the task will run under (it doesn’t have to be a priviledged account at all). Make sure you type the password correctly. Click «Next».
- — Mark the checkbox titled «Open advanced properties for this task when I click Finish» and click «Finish».
- — In the new dialog box, type the following in the «Run:» text box:
c:\windows\wget.exe -q -O NUL http://my.moodle.site/moodle/admin/cron.php
or
c:\php\php-win.exe -f c:\moodle\admin\cli\cron.php
Replace «c:\moodle» with the path to your moodle directory or «my.moode.site» with the name of your site.
- — Click on the «Schedule» tab and there in the «Advanced…» button.
- — Mark the «Repeat task» checkbox and set «Every:» to 3 minutes, and set «Until:» to «Duration» and type «23» hours and «59» minutes.
- — Click «OK» and you are done.
NOTE: If you use the wget version, be sure to check Cron settings to make sure that the ‘web based’ cron service is permitted.
- Test your scheduled task. You can test that your scheduled task can run successfully by clicking it with the right button and chosing «Run». If everything is correctly setup, you will briefly see a DOS command window while wget/php executes and fetches the cron page and then it disappears. If you refresh the scheduled tasks folder, you will see the Last Run Time column (in detailed folder view) reflects the current time, and that the Last Result column displays «0x0» (everything went OK). If either of these is different, then you should recheck your setup.
- Logging cron output. You may want to log the output of the cron script as it executes, in case you see the job is producing errors, backups are not being completed or users are experiencing delays in receiving forum emails. To do this, adjust the command so that it uses the php.exe and stores the output in a file called (for example c:\moodle\admin\cron.log). Here is an example of the php.exe command:
c:\php\php.exe -f c:\moodle\admin\cron.php > c:\moodle\admin\cron.log
If you experience problems logging the output of cron.php to a text file using the above command then read this message by Iñaki Arenaza for an alternative way to log the output of Cron.
Another method is to create a small batch file on your server that does all the work and get the scheduled task to call that file. Here is an example of a batch file that saves the output of cron to a file and deletes log files older than 5 days.
@echo off set phppath="C:\Program Files (x86)\PHP\v5.3\php.exe" set cronpath="C:\moodle\moodle-test\wwwroot\admin\cli\cron.php" set logpath="D:\moodle\moodle-test\cronlogs" %phppath% -f %cronpath% >> %logpath%\%date:~10,4%%date:~4,2%%date:~7,2%.log Forfiles /P %logpath% /S /M *.log /D -5 /C "cmd /c del /q @path"
=Cron in Windows 10/Xampp environment
Setting up a Cron task in the Xampp works using the Task Scheduler. Using wget or MoodleCron is difficult and uncertain. Use the line:
-
c:\php\php.exe -f c:\moodle\admin\cron.php > c:\moodle\admin\cron.log
in the Action dialogue, and ensure you set the timing correctly.