Почему wsl останавливается при включённом systemd?

Доброго времени суток.
В wsl, начиная с версии 0.67.6, стало возможным использовать systemd. Для этого в файле /etc/wsl.conf нужно указать:
[boot]
systemd = true

Проблема вот в чём. Если использовать sysvinit, я могу внутри wsl запустить какой-нибудь процесс и он будет крутиться там, даже если я закрою терминал.
К примеру:
sudo service nginx start
exit

И wsl будет в состоянии running и через 2 часа.
Но если включить systemd и выполнить:
sudo systemctl start nginx
exit

То wsl через пару секунд тупо останавливается.
Но если не выходить из оболочки, то всё продолжает работать.
Можно ли каким-либо образом это побороть?
Или же это так задумано и ничего с этим нельзя сделать?
Спасибо.
  • Вопрос задан
  • 118 просмотров
Решения вопроса 1
@deogar
Можно ли каким-либо образом это побороть?

Можно, например запустив фоновый процесс, который будет работать от root'а (или юзера) при запуске дистрибутива WSL.

Например, создать скрипт с бесконечным циклом и запустить его в фоновом режиме через nohup:

#!/usr/bin/env sh

while true
do
    sleep 30m
done

Вызов можно добавить в /etc/profile.d/start-background.sh или ~/.bashrc
nohup ~/.background.sh > /dev/null &

Или же это так задумано и ничего с этим нельзя сделать?

Судя по тексту блога Microsoft с презентацией systemd для WSL, так и задумано (с). После выхода из interactive shell сам WSL выключит запущенный процесс systemd через короткое время.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
CTRL+ Москва
от 250 000 до 320 000 ₽
CTRL+ Москва
от 200 000 до 300 000 ₽
CTRL+ Белград
от 250 000 до 320 000 ₽