Ponowne uruchomienie Ubuntu w systemie Windows bez ponownego uruchamiania systemu Windows?

76

Czy można zrestartować podsystem Ubuntu bez ponownego uruchamiania systemu?

Próbowałem użyć shutdownpolecenia po zainstalowaniu niektórych aktualizacji, ale nie wydaje się, aby była to tutaj opcja.

Bash w systemie Windows.  Wymagany restart.  shutdown: Nie można zamknąć systemu

Louis
źródło

Odpowiedzi:

101

Zamknij wszystko: Build 18917+

wsl --shutdown

Zakończ określoną dystrybucję: Windows 1903+

wsl -t <DistroName>

starsza wersja

# PowerShell (admin)
Restart-Service LxssManager

# CMD (admin)
net stop LxssManager
net start LxssManager

wprowadź opis zdjęcia tutaj

samdd
źródło
dlaczego netzamiast sc, jak w odpowiedzi @ llinfenga
Gaia
netpracował w cmd (z adminem). Właśnie przetestowałem, że mój plik nietoperza scnie działa w kompilacji systemu operacyjnego Windows 1809.
llinfeng
31

Od wersji Windows 10 1803 zamknięcie wszystkich okien terminala WSL domyślnie nie zabija procesów w tle, chyba że plik /var/run/reboot-requiredjest obecny. Ten plik zostanie automatycznie utworzony przez apt na Ubuntu, gdy aktualizacja wymaga ponownego uruchomienia, ale jeśli chcesz ręcznie zrestartować podsystem, możesz sam utworzyć plik:

sudo touch /var/run/reboot-required

Nie testowałem tego w innych dystrybucjach dostępnych w sklepie Microsoft Store. Alternatywnym rozwiązaniem jest samodzielne zabicie wszystkich procesów:

sudo killall -r '.*'
nyuszika7h
źródło
Czy wiesz, co mogę zrobić, aby wymusić wymagany restart? Chcę przetestować odpowiedź, aby ją zaakceptować.
Louis
1
To zadziałało dla mnie. Musiałem sudo:sudo killall -r '.*'
F21
@Louis Widzę, że już to zaakceptowałeś, ale możesz to zrobić sudo touch /var/run/reboot-required. W rzeczywistości wydaje się, że obecność pliku powoduje, że WSL zabija wszystkie procesy w tle i zamyka podsystem, gdy wszystkie okna terminali są zamknięte, więc można to również nadużyć.
nyuszika7h
1
killalldziałało idealnie dla mnie. Nie musiałem dotykać reboot-required.
Giovanni Bassi
23

Po administracyjnym monitie programu PowerShell: Restart-Service LxssManager

regexaurus
źródło
11
@RajeshS Może być krótki, ale odpowiada na pytanie.
nyuszika7h
Lubię to. Łatwe do zapamiętania, autouzupełnianie z kartą wystarczająco dobrze. Zabawne, aby zobaczyć, jak dobrze Windows od samego początku obniżył swój model usług.
Louis
2
Po prostu dostaję to wielokrotnieWARNING: Waiting for service 'LxssManager (LxssManager)' to stop...
Chris Snow
To działa idealnie. Najpierw uruchom PowerShell z uprawnieniami administratora.
Erik Kalkoken
10

exitWydaje się, że wystarczy wyjść z muszli i ponownie otworzyć.

Louis@ATHENA:~$ bin/rcheck.sh
Reboot not necessary.

Louis@ATHENA:~$ bin/update.sh
[sudo] password for Louis:
The following packages will be upgraded:
  libssl1.0.0 openssl
2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Get:1 http://archive.ubuntu.com/ubuntu/ trusty-updates/main libssl1.0.0 amd64 1.0.1f-1ubuntu2.21 [830 kB]
Get:2 http://archive.ubuntu.com/ubuntu/ trusty-updates/main openssl amd64 1.0.1f-1ubuntu2.21 [489 kB]
Setting up libssl1.0.0:amd64 (1.0.1f-1ubuntu2.21) ...
Setting up openssl (1.0.1f-1ubuntu2.21) ...
Del libssl1.0.0 1.0.1f-1ubuntu2.20 [830 kB]
Del openssl 1.0.1f-1ubuntu2.20 [489 kB]

Louis@ATHENA:~$ bin/rcheck.sh
Reboot required.

Louis@ATHENA:~$ exec bash -l
Louis@ATHENA:~$ bin/rcheck.sh
Reboot required.

Louis@ATHENA:~$ exit

Louis@ATHENA:~$ bin/rcheck.sh
Reboot not necessary.
Louis@ATHENA:~$
Louis
źródło
5
To już nie działa.
Dakkaron
@Dakkaron - Stało się tak, gdy pytanie zostało przesłane.
Ramhound,
1
Dlatego powiedziałem „już”. Informacja, że ​​ten post jest nieaktualny, jest ważna, więc inne osoby, które mają teraz problem, nie muszą go wypróbowywać, aby dowiedzieć się, że to nie działa. Nie jestem pewien, jak tu się sprawy mają, ale na Stackoverflow odpowiedź powinna nie tylko pomóc osobie, która zadała pytanie, ale także wszystkim innym, którzy szukają rozwiązań tego samego problemu.
Dakkaron
W szczególności nie działa od tego czasu Windows 10 Build 17046. @Louis, czy mógłbyś edytować to w swojej odpowiedzi?
Dakkaron
Działa dla mnie na kompilacji 17134.
Ian Kemp
7

Wystarczy otworzyć okno cmd jako administrator i uruchomić te polecenia, aby je ponownie uruchomić.

net stop LxssManager
net start LxssManager
normarth
źródło
1
Dodaj kilka sekund między tymi dwoma poleceniami. np. timeout /t 3polecenie (dodaj 3 sekundy).
Biswapriyo,
2
To powiela odpowiedź samdd z sierpnia.
fixer1234,
Nie działa ... pozostaje w stanie „zatrzymania”. gdy próbuję uruchomić go ponownie, pojawia się komunikat „Usługa się uruchamia lub zatrzymuje. Spróbuj ponownie później.”… nigdy się nie kończy. Zawsze zawiesza się po uruchomieniu polecenia rsync z partii, np. „Bash -c 'rsync ....”. To jest koszmar.
rewolwerowiec
„Usługa LxssManager zatrzymuje się ............................................ ............................. Nie można zatrzymać usługi LxssManager. ” : - /
Alex Jansen
4

Utworzyłem *.batplik i jego uruchomienie powoduje ponowne uruchomienie w ciągu 10 sekund. (Jestem zdumiony, jak szybko wszystko się ładuje. I proszę doradzić, czy moje podejście spowoduje poważne kłopoty na dłuższą metę.)

Umieść następujące dwa wiersze w WSL_reboot.batpliku i uruchom go za każdym razem, gdy musisz ponownie uruchomić WSL w systemie Windows 10.

net stop LxssManager
net start LxssManager 

Uwaga dotycząca aktualizacji : zgodnie z moim ostatnim „uaktualnieniem” systemu operacyjnego Windows kompilacja 1809 nie lubi scjuż polecenia.

Uwaga dodatkowa: należy ponownie uruchomić „jądro” WSL, gdy formatuje dysk z literami za pomocą Eksploratora Windows. Nie do końca rozwiązałem jednak produkt uboczny, w którym lspolecenie otrzyma następujący błąd. Podobne-post-from-WSL @ Github ; Powiązany post ze stosu . Upuści link, jeśli uda mi się rozwiązać błąd produktu ubocznego.

ls: 'System Volume Information': Permission denied
...
d--x--x--x 1 llinfeng llinfeng       512 Jan 15 11:00 'System Volume Information'/
...
llinfeng
źródło
dlaczego sczamiast net, jak w odpowiedzi @ samdd
Gaia
1
Myślę, że netwtedy nie działał mój Windows 10? scmusiał wtedy pracować. Powinienem był podać numer kompilacji systemu Windows.
llinfeng