Подсистема Windows для Linux, по состоянию на май 2018 года, по-прежнему не поддерживает init.d
или управление службами systemd
, и я столкнулся с проблемами со службами и несколькими опциями в сети, при этом оптимальная работа во всех случаях
3 ответа
Следующий скрипт bash работает для меня .. Обратите внимание, что оператор continue
требуется для пропуска сценариев, которые не работают, а аргумент start
необходим большинству служебных сценариев. Я считаю,
for f in /etc/init.d/*; do sh "$f" start || continue; done ;
Это всего лишь общее направление (это то, как я это сделал) - может быть, кто-то может улучшить идею.
Всякий раз, когда служба LxssManager запускается (перезапускается) , в окне просмотра событий появляются 2 записи -> Журналы Windows -> Безопасность.
Успех аудита Вс 13.01.2019 13:34:52 Аудит безопасности Microsoft Windows. 4672 Special Logon Audit Success Вс. 13.01.2019 13:34:52 Аудит безопасности Microsoft Windows. 4624 Войти
Если вы щелкнете правой кнопкой мыши по значку "Специальный вход" в столбце категории задач, вы можете "Прикрепить задачу к этому событию" с помощью следующих действий (с помощью Планировщика задач).
Программа / скрипт: C:\Windows\System32\wsl.exe и с аргументами: /usr/bin/apache.sh (или любой другой файл .sh, который вы создали)
На стороне Linux создайте файл .sh, чтобы запустить свой сервис в Linux (вот как я это сделал):
создайте apache.sh и поместите его в /usr /bin /
Мой apache.sh выглядит так:
#!/bin/sh
sudo service apache2 start
Если ваш скрипт требует аутентификации Linux, вы можете использовать
ubuntu config --default-user root (установит пользователя по умолчанию как root) - запустите его из cmd.exe с правами администратора.
Подробнее об этом https://docs.microsoft.com/en-us/windows/wsl/user-support
Это похоже на хороший автоматизированный метод без суеты (по крайней мере для меня)
В прошлом я не видел по-настоящему хороших ответов на этот вопрос, поэтому я разработал следующий скрипт, который я использую на нескольких машинах. Это значительно упрощает установку apt apache2, так как тогда он автоматически настраивается. Я добавил комментарии, чтобы было проще узнать, как их использовать, и выкинул их на github. Также решил исправить надоедливую визуальную ошибку.
Это предполагает, что в вашем файле sudoers есть nopasswd, иначе вы получите приглашение при запуске.
#!/bin/bash
# Add new shortcut under the following directory
# "C:\Users\%USERAME%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup"
# Make the shortcut here the following is an example, assuming this file is /etc/init.sh
# You can change the 3 to 5 for example if for example you used x11
# C:\Windows\System32\bash.exe -c "/usr/bin/sudo /etc/init.sh 3"
[[ -z $1 ]] && { echo "Need to specify a run level"; exit 127; }
run_level=$1
[[ -d /etc/rc${run_level}.d/ ]] || { echo "Need to specify a run level"; exit 127; }
for rc_service in /etc/rc${run_level}.d/K*; do
[[ -e "$rc_service" ]] && $rc_service stop
done
for rc_service in /etc/rc${run_level}.d/S*; do
[[ -e "$rc_service" ]] && $rc_service start
done
Я возьму любые исправления ошибок или предложения здесь:https://github.com/masshuku/wsl-init.sh