Почему 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 через пару секунд тупо останавливается.
Но если не выходить из оболочки, то всё продолжает работать.
Можно ли каким-либо образом это побороть?
Или же это так задумано и ничего с этим нельзя сделать?
Спасибо.
  • Вопрос задан
  • 81 просмотр
Решения вопроса 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 через короткое время.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы