Гид по технологиям

Автоматический запуск cron в WSL через Планировщик заданий Windows

• 8 min read • DevOps • Обновлено 24 Nov 2025
Запуск cron в WSL через Планировщик задач
Запуск cron в WSL через Планировщик задач

Иллюстрация терминала и значков Windows и Linux для автоматизации задач

Быстрые ссылки

  • Cron по умолчанию не запускается
  • Подготовка Linux (WSL)
  • Настройка cron через Планировщик заданий Windows

Введение

Windows предоставляет несколько способов автоматизации задач. Самый распространённый — Планировщик заданий Windows. Если вы используете Windows Subsystem for Linux (WSL), внутри него можно запускать стандартный демон cron, который планирует и выполняет задания (cronjobs). Но WSL не запускает cron автоматически при старте системы, поэтому cron-задания могут не выполняться, пока вы вручную не стартнёте демон.

Ниже — пошаговая инструкция, как настроить автоматический запуск cron в WSL при старте Windows. Предполагается, что у вас уже есть созданные cronjobs в вашем дистрибутиве WSL (например, Ubuntu), и вы хотите, чтобы они запускались без ручного вмешательства.

Важно: инструкция рассчитана на пользователей с правами администратора в WSL (пользователь может выполнять sudo). Подход работает как в Windows 10, так и в Windows 11.

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

WSL включает дистрибутивы Linux, например Ubuntu, где доступен cron. Однако WSL не стартует системные демоны автоматически при запуске Windows в большинстве конфигураций. Вы могли заметить, что после перезапуска системы ваши cronjobs не выполняются — это потому, что демон cron не работает.

Вы могли бы запускать cron вручную в каждом терминальном сеансе, но это противоречит самой идее автоматизации. Поэтому мы используем Планировщик заданий Windows, чтобы при старте Windows запускать WSL с командой, которая стартует cron.

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

Если вы не знакомы с настройкой cron в Linux, сначала ознакомьтесь с базовыми материалами по crontab — кратко: crontab — это таблица расписания для запуска команд по времени. Здесь мы не пересматриваем синтаксис crontab, а сосредоточимся на том, как обеспечить запуск демона cron.

Подготовка Linux (WSL)

Первый шаг — позволить системе запускать cron из внешнего процесса (в нашем случае — из Планировщика заданий Windows) без запроса пароля. Команда, которую мы будем использовать для запуска cron внутри WSL:

sudo service cron start

По умолчанию sudo требует пароль, а Планировщик заданий Windows не сможет его передать. Решение — добавить правило в файл sudoers, разрешающее запуск конкретной команды без пароля.

Шаги:

  1. Откройте терминал WSL.
  2. Выполните:
sudo visudo
  1. В nano (редактор по умолчанию в большинстве Ubuntu) добавьте внизу файла строку:
%sudo ALL=NOPASSWD: /usr/sbin/service cron start
  1. Сохраните (Ctrl+O), затем выйдите (Ctrl+X).

Эта строка говорит: любой пользователь из группы sudo может запускать команду /usr/sbin/service cron start без ввода пароля. После сохранения проверьте:

sudo service cron start

Если демон запустился без запроса пароля, всё настроено верно. Остановите cron, чтобы протестировать Планировщик заданий позже:

sudo service cron stop

Важно: не давайте права NOPASSWD для команд, которые могут использоваться во вред — ограничивайте правило конкретной командой и её путём.

Примечание: если ваш дистрибутив использует systemd и у вас другой способ управления демонами, команда может отличаться. В типичной Ubuntu для WSL используется /usr/sbin/service.

Создание задачи в Планировщике заданий Windows

Теперь создадим задачу, которая при старте Windows выполнит WSL и передаст ему команду для старта cron.

Шаги в Windows:

  1. Нажмите клавишу Windows, введите “Планировщик заданий” и откройте соответствующий ярлык.

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

  1. В правой панели выберите “Создать простую задачу…” (Create Basic Task) или “Создать задачу…” (Create Task) для детальной настройки. В мастере укажите имя, например cron, и описание, например: “Запуск cron в WSL при старте системы”.

Планировщик заданий Windows с опцией

  1. В разделе, где спрашивают, когда запускать задачу, выберите “При запуске компьютера” (When the computer starts).

Выбор триггера

  1. В разделе действия выберите “Запуск программы” (Start a program).

  2. В поле “Программа/скрипт” укажите путь к wsl.exe:

C:\Windows\System32\wsl.exe
  1. В поле “Добавить аргументы” укажите команду, которую нужно выполнить в WSL. Мы хотим запустить cron через sudo без запроса пароля:
sudo /usr/sbin/service cron start
  1. Завершите мастер, но отметьте опцию “Открыть окно свойств задачи после нажатия Готово” (Open the Properties dialog when I click Finish), чтобы внести последние настройки.

Окончание создания задачи с опцией открытия свойств

  1. В свойствах задачи на вкладке “Общие” выберите “Выполнять независимо от того, вошёл пользователь в систему или нет” (Run whether user is logged on or not). Это позволяет запускать задачу без интерактивной сессии.

Окно свойств задачи с опцией

  1. При необходимости отметьте “Выполнять с наивысшими правами” (Run with highest privileges). Нажмите ОК и при необходимости введите учётные данные пользователя Windows.

Тестирование

  1. В списке задач Планировщика найдите вашу задачу (например, cron), кликните правой кнопкой и выберите “Выполнить”.
  2. Вернитесь в терминал WSL и проверьте статус cron:
sudo service cron status

Вы должны увидеть сообщение, что демон работает. Если нет — проверьте точки ниже.

  1. После успешного ручного теста перезагрузите компьютер и снова проверьте статус cron в WSL:
sudo service cron status

Если cron запущен после перезагрузки, задача работает корректно.

Терминал, подтверждающий, что cron запущен

Частые проблемы и их решения

  • Подсказка пароля при запуске задачи. Убедитесь, что вы добавили правило в sudoers точно как указано и что путь к команде совпадает: /usr/sbin/service cron start.
  • Неправильный путь к wsl.exe. Используйте C:\Windows\System32\wsl.exe (экранируйте обратные слэши при указании в документации, но в интерфейсе Планировщика просто вставьте путь как есть).
  • Задача не запускается при старте: проверьте, включён ли триггер “При запуске компьютера” и установлена ли опция “Выполнять независимо от того, вошёл пользователь в систему или нет”.
  • Проблемы с правами: отметьте “Выполнять с наивысшими правами” и проверьте, что учётные данные пользователя актуальны.
  • Если ваш дистрибутив использует systemd вместо init/service, способы управления сервисами могут отличаться; проверьте документацию конкретного дистрибутива.

Советы по отладке:

  • В Планировщике в истории задачи смотрите код возврата и любую информацию о запуске.
  • Запустите ту же команду вручную в обычном терминале Windows: wsl sudo /usr/sbin/service cron start и посмотрите вывод.

Дополнительно: примеры crontab и сценариев проверки

Пример простого задания crontab, которое пишет timestamp в файл каждую минуту (полезно для тестирования):

* * * * * /bin/date >> /home/youruser/cron-test.log 2>&1

Шаги для проверки:

  1. Добавьте вышеуказанную строку в crontab вашего пользователя (crontab -e).
  2. Убедитесь, что cron запущен с помощью Планировщика.
  3. Подождите пару минут и проверьте содержимое /home/youruser/cron-test.log.

Критерии приёмки

  • После перезагрузки Windows команда sudo service cron status в WSL сообщает, что cron активен.
  • Тестовый crontab выполняется в назначенное время (например, файл cron-test.log получает новые строки).
  • Планировщик успешно выполняет задачу вручную через опцию “Выполнить”.

Безопасность и рекомендации

  • Не давайте NOPASSWD-права для широких групп команд; ограничьте правило конкретным путём.
  • Если у вас на WSL важные данные, убедитесь, что ваша конфигурация не позволяет посторонним пользователям запускать команды от вашего имени через Планировщик.
  • Регулярно проверяйте логи cron (/var/log/syslog или /var/log/cron.log, зависит от дистрибутива) для обнаружения сбоев.

Альтернативные подходы

  • Использовать системные инструменты Windows для запуска задач напрямую (например, сценарии PowerShell), которые вызывают отдельно созданные скрипты в файловой системе WSL.
  • Для контейнеризированных рабочих нагрузок — запускать планировщик внутри контейнера или использовать внешнюю систему оркестрации задач.
  • Если требуется более сложная синхронизация демонов Linux при старте WSL, можно создать пользовательские системные службы в Windows, которые управляют жизненным циклом WSL-инстансов.

Методология: быстрый чеклист внедрения (мини-метод)

  1. Подготавливаем WSL: sudo visudo → добавляем правило NOPASSWD.
  2. Создаём задачу в Планировщике: программа C:\Windows\System32\wsl.exe, аргументы sudo /usr/sbin/service cron start.
  3. Во свойствах: триггер — “При запуске компьютера”, опция — “Выполнять независимо от того, вошёл пользователь в систему или нет”.
  4. Тестируем: вручную выполнить задачу, проверить sudo service cron status и/или лог тестовой задачи.
  5. Перезагружаем ПК и подтверждаем работоспособность.

Роль‑ориентированные чеклисты

Для системного администратора:

  • Убедиться, что правило в sudoers минимально (только для /usr/sbin/service cron start).
  • Проверить логи cron и Планировщика на каждом обновлении системы.
  • Убедиться, что обновления WSL или дистрибутива не меняют пути.

Для разработчика/пользователя:

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

Диаграмма принятия решения (Mermaid)

flowchart TD
  A[Нужен автоматический cron в WSL?] -->|Да| B[WSL установлен?]
  A -->|Нет| Z[Нет действий]
  B -->|Нет| Y[Установить WSL и Linux-дистрибутив]
  B -->|Да| C[Добавить правило в sudoers]
  C --> D[Создать задачу в Планировщике]
  D --> E[Тестировать вручную]
  E --> F{cron запущен?}
  F -->|Да| G[Перезагрузить и проверить]
  F -->|Нет| H[Отладка: логи, пути, права]
  H --> D

Совместимость и особенности

  • Работает в WSL1 и WSL2, но поведение демонов может отличаться в зависимости от конфигурации дистрибутива.
  • Некоторые дистрибутивы или кастомные сборки могут использовать альтернативные механизмы инициализации (systemd и т.п.). В таких случаях используйте соответствующие команды для управления сервисами.

Факты и полезные команды (шпаргалка)

  • Проверка статуса cron:
sudo service cron status
  • Запустить cron вручную:
sudo service cron start
  • Остановить cron:
sudo service cron stop
  • Правило sudoers для запуска без пароля:
%sudo ALL=NOPASSWD: /usr/sbin/service cron start

FAQ

Q: Нужно ли мне давать NOPASSWD для других команд?
A: Нет. Давайте минимальные привилегии и указывайте точную команду и путь.

Q: Будет ли cron запускаться, если я использую другое имя пользователя?
A: Да, если пользователь является членом группы sudo или правило в sudoers настроено для соответствующей группы/пользователя.

Q: Можно ли запускать несколько команд через один запуск wsl.exe?
A: Да, можно передавать более сложную команду или сценарий, например: wsl bash -lc "sudo /usr/sbin/service cron start && echo started".

Итог

Вы настроили автоматический запуск cron в WSL через Планировщик заданий Windows. Это устраняет необходимость запуска cron вручную и позволяет вашим cronjobs выполняться по расписанию после каждой перезагрузки. Следуйте принципам минимальных привилегий и регулярно проверяйте логи для надёжности.

Важно: если ваша инфраструктура критична к безопасности или доступности, тестируйте настройки в тестовой среде перед внедрением в продакшен.


Если хотите, могу подготовить: 1) шаблон задачи (.xml) для импорта в Планировщик, 2) пример полноценного crontab для типичных задач (бэкапы, зачистка логов, мониторинг) или 3) краткое объявление для команды о внедрении (100–200 слов).

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро