У меня Ubuntu 18.04.1 LTS работает под управлением Windows 10 Pro. После каждой перезагрузки демон cron не запускается.
Я могу запустить его вручную с sudo service cron start
.
Что я могу настроить или какой системный файл мне нужно изменить, чтобы после перезагрузки запускался демон cron?
Как это описано в статье Starting Linux Background Services on Windows Login, необходимо инициировать команду sudo service cron start
из Windows. Можно использовать Windows Task Scheduler с этой целью. Вот шаги от упомянутой статьи с небольшие модификации:
1. Создайте сценарий запуска и сделайте его исполняемым файлом:
echo "service cron start" | sudo tee /usr/local/bin/cronstart.sh
sudo chmod +x /usr/local/bin/cronstart.sh
Таким образом cronstart.sh
будет доступно как широкая система команд оболочки.
2. Создайте файл в /etc/sudoers.d/
с целью позволить Ваш $USER
выполниться cronstart.sh
sudo
без пароля. Выполните следующую команду для генерации строки, которая должна быть помещена в sudoers файл:
echo "$USER ALL=(ALL) NOPASSWD: /usr/local/bin/cronstart.sh"
Скопируйте вывод команды, используйте команду sudo visudo -f /etc/sudoers.d/cronstart
и вставьте скопированную строку как содержание недавно созданного файла. Сохраните файл и выход.
3. В рамках Windows перейдите к панели поиска, найдите и запустите Планировщика задач (как администратор, если Ваш текущий счет не является администраторами один).
Теперь, нажмите Task Scheduler Library слева и затем Создайте Задачу … на праве создать новую задачу. Можно использовать следующие параметры для конфигурирования задачи:
Вкладка "Общие":
Назовите задачу чем-либо, как что Вы хотите, WSL service cron start
.
Выбор опция Run, зарегистрирован ли пользователь или нет.
Mark не хранит пароль и Выполнение с самыми высокими полномочиями.
В Настраивании для выпадающего выбора Windows 10
.
Если необходимо установить задачу для другого пользователя, нажимают на кнопку Change User or Group...
.
Вкладка Triggers:
Нажмите New … для добавления нового триггера для этой задачи.
В Начинании задачи раскрывают выбор At startup
.
В Расширенных настройках можно проверить задачу Задержки на 1 minute
.
Вкладка Actions:
Нажмите New … для добавления нового действия для этой задачи.
Выбор Запускает программу для типа действия и затем входит C:\Windows\System32\wsl.exe
как программа для выполнения.
В Добавляют, что аргументы (дополнительно) устанавливают это: sudo cronstart.sh
.
Вот именно. Перезагрузите систему, затем откройте терминал WLS и использование service cron status
проверять ли cron is running
.
Я сделал некоторые тесты, и к сожалению я нашел, что Windows 10 испытывает некоторые ошибки, и почти невозможно установить такую задачу для учетной записи пользователя неадминистратора при использовании учетной записи Windows вместо локального одна... полная путаница: O
Как обходное решение в этом случае можно создать названный файл cronstart.bat
в папке shell:startup
с содержанием следующим образом:
C:\Windows\System32\wsl.exe sudo cronstart.sh
То, как использовать VBS вместо bat-файла для достижения того же результата, показывают здесь: