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

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

Cron Isn не работает по умолчанию

В 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:WindowsSystem32wsl.exe

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

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

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

Окно свойств задачи Windows с красной стрелкой, указывающей на параметр

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

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

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

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

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

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

Оцените статью
SERGOOT.RU
Добавить комментарий