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

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

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

Похожие вопросы
Wanted. Санкт-Петербург
До 220 000 ₽
Wanted. Санкт-Петербург
До 150 000 ₽
ЛАНИТ Москва
от 120 000 ₽
18 дек. 2024, в 12:39
1000 руб./за проект
18 дек. 2024, в 12:37
10000 руб./за проект
18 дек. 2024, в 12:22
5000 руб./за проект