Ist es möglich, das Ubuntu-Subsystem neu zu starten, ohne mein System neu zu starten?
Ich habe versucht, den Befehl nach der Installation einiger Updates zu verwenden shutdown
, aber das scheint hier keine Option zu sein.
Der Screenshot-Text:
~$ bin/rcheck.sh
Reboot required.
~$ sudo shutdown -r now
shutdown: Unable to shutdown system
Antwort1
Sie können eine Distribution nicht mit einem einzigen Befehl neu starten. Sie müssen die Distribution mit zwei Befehlen herunterfahren und neu starten. Wenn Siewsl.exe
anstelle von wsl
, dann funktioniert es sowohl in WSL Bash als auch in CMD.
Sehen Sie sich die Liste der Distributionen und ihren aktuellen Status an:
wsl.exe -l -v
Alles herunterfahren: Build 18917+
wsl.exe --shutdown
Beenden Sie eine bestimmte Distribution: Windows 1903+
wsl.exe -t <DistroName>
Starten Sie die Standarddistribution (mit *
) gekennzeichnet:
wsl.exe
Starten Sie eine bestimmte Distribution:
wsl.exe -d <DistroName>
ältere Versionen
# PowerShell (admin)
Restart-Service LxssManager
# or CMD (admin)
net stop LxssManager
net start LxssManager
Antwort2
An einer administrativen PowerShell-Eingabeaufforderung:Restart-Service LxssManager
Antwort3
Seit Windows 10, Version 1803, werden Hintergrundprozesse standardmäßig nicht mehr beendet, wenn alle WSL-Terminalfenster geschlossen werden, es sei denn, die Datei /var/run/reboot-required
ist vorhanden. Diese Datei wird unter Ubuntu automatisch von apt erstellt, wenn ein Update einen Neustart erfordert. Wenn Sie das Subsystem jedoch manuell neu starten möchten, können Sie die Datei selbst erstellen:
sudo touch /var/run/reboot-required
Ich habe dies nicht auf anderen im Microsoft Store verfügbaren Distributionen getestet. Eine alternative Lösung besteht darin, alle Prozesse selbst zu beenden:
sudo killall -r '.*'
Antwort4
Das Folgende ermöglicht ein Herunterfahren innerhalb von WSL2 mithilfe des Befehls
wslreboot
(oder eines beliebigen benutzerdefinierten Befehls).
Technisch, wslshutdown
wäre für den folgenden Code passender:
Alias erstellen:
sudo nano ~/.bash_aliases
Zeile hinzufügen:
alias wslreboot='history -a && cmd.exe /C wsl --shutdown'
history -a
stellt sicher, dass der Bash-Befehlsverlauf vor dem Herunterfahren gespeichert wird.
Alias aktivieren:
WSL neu starten
cmd.exe /C wsl --shutdown
oder Typ
source .bash_aliases
Verwenden
Jetzt können Sie tippen
wslreboot
Herunterfahren
Ich denke, Sie könnten eine Variante des oben genannten verwenden, um eine Batchdatei mit den folgenden Zeilen auszuführen:
wsl --shutdown
wsl
für einen ordnungsgemäßen Neustart.