Як запустити скрипти init.d у Windows WSL?


2

Підсистема Windows для Linux, станом на травень 2018 року, досі не підтримує init.dабо systemdкерує сервісом, і я зіткнувся з проблемами в сервісах та кількох варіантах в Інтернеті, але не працюючи оптимально для всіх випадків


Чи є причина, чому ви не можете створити для них службу Windows?
Ігнасіо Васкес-Абрамс

@ IgnacioVazquez-Abrams, чи можете ви надати пояснення, як це працює?
Olubodun Agbalaya

Що стосується роботи служб у Windows?
Ігнасіо Васкес-Абрамс

Щодо того, як створити службу для запуску служби Linux / сценарій запуску з Windows @ IgnacioVazquez-Abrams
Olubodun Agbalaya

Відповіді:


2

Наступний скрипт bash працює для мене .. Зверніть увагу, що continueоператор потрібен для пропуску скриптів, які не виходять, і startаргумент потрібен більшості скриптів служби .. я вважаю

for f in /etc/init.d/*; do sh "$f" start || continue; done ;

Куди це припущення, і що ви, на його думку, це робите?
lijat

Це може запустити bash-скрипт і запустити кожну перезавантаження через Cron. Що б це зробило, воно спробує запустити будь-який /init.d скрипт, але пропустити будь-яке, що не
вдалося

0

Це просто загальний напрямок (саме так я це зробив) - можливо, хтось може вдосконалити ідею.

Щоразу, коли служба LxssManager запускається (перезапускається) , у переглядачі подій є 2 записи -> Журнали Windows -> Безпека

Успіх аудиту ВС 13.01.2019 13:34:52 Аудит безпеки Microsoft Windows. 4672 Успіх спеціального аудиту входу в НД 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 - root за замовчуванням (встановить користувача за замовчуванням як root) - запустіть це з cmd.exe з правами адміністратора.

Докладніше про це https://docs.microsoft.com/en-us/windows/wsl/user-support

Це здається приємним автоматизованим методом безкоштовного гусля (хоча б мені)


-1

Раніше я не бачив справді хороших відповідей на це, тому я розробив наступний сценарій, який використовую на кількох машинах. Це робить такі речі, як apt install apache2 набагато простіше, ніж їх зазвичай автоматично налаштовується. Я додав коментарі, щоб було легше знати, як ним користуватися, і кинув його на github. Також вирішили виправити дратівливу візуальну помилку.

Це передбачає, що у файлі sudoers у вас немає nopasswd, оскільки в іншому випадку ви отримаєте підказку при запуску.

#!/bin/bash

# Add new shortcut under the following directory
# "C:\Users\%USERNAME%\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"
# You will also need to update your sudoers to allow NOPASSWD as otherwise it will prompt you for a password each time.

[[ -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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.