Как автоматически запустить Cron в WSL в Windows 10 и 11

Рука с секундомером.Миллиард фотографий / Shutterstock.com

В Windows есть несколько способов автоматизации задач. Самым распространенным инструментом является планировщик задач Windows, но если вы используете подсистему Windows для Linux (WSL), есть также демон cron, который запускает задачи в фоновом режиме для вашей установки WSL.

Cron не запускается по умолчанию

В Windows 10 и Windows 11 cron входит в состав сред Linux, таких как Ubuntu. Проблема в том, что WSL не запускает cron автоматически, а это означает, что ваши автоматические задачи не выполняются по умолчанию.

Чтобы исправить это, вы можете запускать cron вручную каждый раз, когда открываете командную строку, но ручной запуск инструмента, который должен автоматизировать задачи, вроде как упускает суть.

К счастью, есть простой способ исправить это, и он требует использования планировщика заданий.

Окно терминала Windows WSL, показывающее, что cron не запущен.

Если вы никогда не использовали cron в Linux для выполнения задач, ознакомьтесь с нашим предыдущим руководством о том, как планировать задачи в Linux. Для наших целей здесь мы предполагаем, что вы уже создали несколько заданий cron в своей установке WSL и вам нужна помощь, чтобы они работали, а не постоянно присматривали за cron.

В этом руководстве мы собираемся использовать службу sudo для проверки и запуска cron, что является рекомендуемым способом остановки и запуска служб в современных сборках Ubuntu — самого популярного дистрибутива для WSL.

Также обратите внимание, что в этом руководстве предполагается, что у вас есть права администратора в вашей версии WSL. Если вы единственный пользователь своего ПК и включили WSL самостоятельно, у вас есть права администратора.

Совет: это работает и в подсистеме Windows для Linux в Windows 11, а не только в Windows 10.

Подготовьте Linux

Первое, что нам нужно сделать, это разрешить компьютеру запускать cron без пароля. Когда вы запускаете такую ​​службу, как cron, вы используете команду sudo service cron start. Но для этой команды требуется пароль, к которому у Windows не будет доступа при запуске. Чтобы решить эту проблему, нужно отключить требование пароля для этой команды.

Для этого откройте окно терминала WSL и введите sudo visudo. Нажмите Enter на клавиатуре, введите свой пароль Linux и снова нажмите клавишу Enter. Если вы используете Ubuntu, это открывает файл «sudoers» с помощью удобного для начинающих текстового редактора командной строки Nano. Sudoers — это файл для системных администраторов, который может изменять привилегии и права доступа пользователей.

Добавьте следующую команду в конец файла sudoers, а затем нажмите Ctrl + o для сохранения и Ctrl + x для выхода из файла.

% sudo ALL = NOPASSWD: / usr / sbin / service cron start

Эта команда sudoers говорит, что любому пользователю, имеющему достаточно прав для использования команды sudo (которая должна включать вас), не требуется пароль для запуска команды sudo service cron start, которая запускает демон cron.

После сохранения файла вы можете проверить, выполняет ли команда свою работу, набрав sudo service cron start, и она должна запускать cron без запроса пароля. Если это сработало, давайте снова выключим cron, чтобы мы могли проверить, правильно ли работает задача, которую мы создаем на следующем шаге. Для этого запустите sudo service cron stop.

Настройте Cron в планировщике задач Windows

Это первый этап нашего пути к автоматизации cron. Перейдем ко второй части с планировщиком заданий. Коснитесь клавиши Windows на клавиатуре и найдите «Планировщик заданий». Запустите ярлык «Планировщик заданий».

Результаты поиска в Windows 10 с указанием Планировщика заданий в качестве опции.

Когда он запустится, загляните в раздел «Действия» и выберите «Создать базовую задачу».

Планировщик задач Windows 10 с красной стрелкой, указывающей на "Создать базовую задачу" вариант.

Откроется мастер основных задач. Во-первых, он попросит вас назвать задачу и дать ей описание. Вы можете ввести здесь все, что хотите. Мы назвали задачу «cron», и ее описание звучало так: «Задача для запуска cron при запуске системы». Теперь нажмите «Далее».

В следующем разделе мы перейдем к делу. Во-первых, Windows хочет знать, когда мы хотим запустить задачу. Установите переключатель «Когда компьютер запускается» и нажмите «Далее».

Набор переключателей в Windows 10 с красной стрелкой, указывающей на "Когда компьютер запускается" вариант.

В следующем разделе мы хотим «Начать программу». Этот вариант выбран по умолчанию, поэтому нажмите «Далее».

Параметры программы Планировщика заданий Windows 10 с красными стрелками, указывающими путь к программе, и текстовым полем ввода дополнительных аргументов.

Теперь нам нужно указать программу, которую мы хотим запустить, а именно WSL. Введите в текстовое поле «Программа / сценарий» следующее: C: Windows System32 wsl.exe

Нам также нужно добавить некоторые аргументы, поскольку все, что мы до сих пор сделали, это запустили WSL, но внутри WSL нам нужно указать Ubuntu запустить cron. Итак, в поле «Добавить аргументы» добавьте: sudo / usr / sbin / service cron start

Последнее окно создания задачи Планировщика задач Windows 10 с красной стрелкой, указывающей на возможность открытия окна свойств задачи по завершении.

Еще раз нажмите «Далее», установите флажок «Открыть диалоговое окно свойств, когда я нажму« Готово », а затем нажмите« Готово ».

Окно свойств задачи Windows с красной стрелкой, указывающей на параметр "Запускается независимо от того, вошел ли пользователь в систему или нет."

Задача создана, но нужно сделать последнее, чтобы убедиться, что все работает. Откроется новое окно, в котором отображается сводная информация о созданной вами задаче, но она настроена на запуск только тогда, когда вы вошли в систему. Нам нужно выбрать переключатель с надписью «Запускать независимо от того, вошел ли пользователь в систему или нет», а затем нажать «ОК».

Теперь давайте протестируем нашу задачу двумя способами. Сначала в главном окне Планировщика заданий прокрутите вниз, пока не увидите название своей задачи. Если вы использовали имя «cron», оно должно находиться в верхней части списка. Щелкните задачу правой кнопкой мыши и выберите «Выполнить».

Окно терминала, показывающее, что cron запущен.

Затем вернитесь к своему терминалу WSL и введите sudo service cron status, и он должен сказать, что cron запущен. Если это не так, еще раз проверьте, правильно ли вы ввели все на предыдущих шагах.

Если при первой проверке все заработало, пришло время для большого теста. Перезагрузите компьютер, а когда вернетесь, откройте терминал WSL и запустите sudo service cron status, который должен сообщить, что cron теперь запущен.

Поздравляю! Вы сделали свой первый шаг в большой автоматизированный мир. Если cron работает в фоновом режиме, задания cron, которые вы настраиваете в WSL, будут автоматически запускаться по расписанию.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован.