336 votes

Redémarrer Ubuntu sur Windows sans redémarrer Windows ?

Est-il possible de redémarrer le sous-système Ubuntu sans redémarrer mon système ?

J'ai essayé d'utiliser le shutdown après avoir installé certaines mises à jour, mais cela ne semble pas être une option ici.

Bash on Windows. Reboot required. shutdown: Unable to shutdown system

0 votes

Le redémarrage (standard) de la WSL n'est pas une chose. Pour faire simple, une distribution WSL est juste un conteneur (comme Docker) avec un Shell. Même avec WSL 2, le redémarrage de la VM ne fait rien à une distribution.

483voto

Sam Denty Points 5002

Fermez tout : <a href="https://devblogs.microsoft.com/commandline/wsl-2-is-now-available-in-windows-insiders/" rel="noreferrer">Build 18917+</a>

wsl.exe --shutdown

Terminer une distro spécifique : <a href="https://docs.microsoft.com/en-us/windows/wsl/reference#wslexe" rel="noreferrer">Windows 1903+</a>

wsl.exe -t <DistroName>

Anciennes versions

# PowerShell (admin)
Restart-Service LxssManager

# or CMD (admin)
net stop LxssManager
net start LxssManager

enter image description here

0 votes

Pourquoi net 代わりに sc comme dans la réponse de @llinfeng.

0 votes

net a fonctionné dans cmd (avec admin). Je viens de tester que mon fichier bat avec sc ne fonctionne pas dans Windows OS Build 1809.

0 votes

@Gaia le net est l'outil traditionnel de gestion des services et des réseaux Windows, avant PowerShell.

102voto

À une invite PowerShell d'administration : Restart-Service LxssManager

17 votes

@RajeshS Il est peut-être court mais il répond à la question.

1 votes

Je l'aime bien. Facile à retenir, s'autocomplète avec la tabulation assez bien. C'est amusant de voir à quel point Windows a réussi à mettre en place son modèle de service dès le début.

17 votes

Je reçois ce message de façon répétée WARNING: Waiting for service 'LxssManager (LxssManager)' to stop...

40voto

nyuszika7h Points 2354

Depuis la version 1803 de Windows 10, la fermeture de tous les terminaux WSL ne tue pas les processus d'arrière-plan par défaut, sauf si le fichier /var/run/reboot-required est présent. Ce fichier sera automatiquement créé par apt sur Ubuntu lorsqu'une mise à jour nécessite un redémarrage, mais si vous souhaitez redémarrer manuellement le sous-système, vous pouvez créer le fichier vous-même :

sudo touch /var/run/reboot-required

Je ne l'ai pas testé sur d'autres distributions disponibles dans le Microsoft Store. Une autre solution consiste à tuer vous-même tous les processus :

sudo killall -r '.*'

0 votes

Savez-vous ce que je peux faire pour forcer un redémarrage obligatoire ? Je veux tester la réponse pour pouvoir l'accepter.

1 votes

Cela a marché pour moi. J'ai dû sudo : sudo killall -r '.*'

1 votes

@Louis je vois que vous l'avez déjà accepté, mais vous pouvez faire sudo touch /var/run/reboot-required . En fait, il semble que la présence de ce fichier amène WSL à tuer tous les processus d'arrière-plan et à arrêter le sous-système lorsque tous les terminaux Windows sont fermés, ce qui permet d'en abuser également.

23voto

Ed Beighe Points 21

Ouvrez simplement une fenêtre cmd en tant qu'administrateur et exécutez ces commandes pour le redémarrer.

net stop LxssManager
net start LxssManager

2 votes

Ajoutez quelques secondes entre ces deux commandes, par exemple. timeout /t 3 (ajouter 3 secondes).

2 votes

Cela fait double emploi avec la réponse de Samdd du mois d'août.

0 votes

Ne fonctionne pas... reste en statut "stopping". Quand j'essaie de le relancer, j'obtiens "The service is starting or stopping. Please try again later."... ne se termine jamais. Il se bloque toujours après que j'ai lancé une commande rsync à partir de batch comme "bash -c 'rsync....'". C'est un cauchemar.

12voto

Dara O h Points 101

Ce qui suit permet un arrêt à partir de WSL2 en utilisant la commande wslreboot (ou toute autre commande personnalisée).

Techniquement , wslshutdown serait plus approprié pour le code ci-dessous :

Créer un alias :

sudo nano ~/.bash_aliases

Ajouter une ligne :

alias wslreboot='history -a && cmd.exe /C wsl --shutdown'

history -a assure que l'historique des commandes bash est sauvegardé avant l'arrêt.

Activer l'alias :

Redémarrer le WSL

cmd.exe /C wsl --shutdown

ou tapez

source .bash_aliases

Utilisez

vous pouvez maintenant taper

wslreboot  

à la fermeture


Je pense que vous pourriez utiliser une variation de ce qui précède pour exécuter un fichier batch avec les lignes :

wsl --shutdown
wsl

pour un redémarrage correct.

0 votes

J'ai perdu de précieuses minutes à lire la documentation et à résoudre ce problème par moi-même avant de trouver votre réponse :) Merci

0 votes

Belle réponse, j'ai appris quelque chose de nouveau.

0 votes

En fait, PowerShell 7 détecte la sortie brutale comme une erreur.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X