Задать вопрос

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

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

Похожие вопросы