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.
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>
# PowerShell (admin)
Restart-Service LxssManager
# or CMD (admin)
net stop LxssManager
net start LxssManager
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.
@Gaia le net
est l'outil traditionnel de gestion des services et des réseaux Windows, avant PowerShell.
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.
Je reçois ce message de façon répétée WARNING: Waiting for service 'LxssManager (LxssManager)' to stop...
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 '.*'
Savez-vous ce que je peux faire pour forcer un redémarrage obligatoire ? Je veux tester la réponse pour pouvoir l'accepter.
@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.
Ajoutez quelques secondes entre ces deux commandes, par exemple. timeout /t 3
(ajouter 3 secondes).
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.
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 :
sudo nano ~/.bash_aliases
alias wslreboot='history -a && cmd.exe /C wsl --shutdown'
history -a
assure que l'historique des commandes bash est sauvegardé avant l'arrêt.
Redémarrer le WSL
cmd.exe /C wsl --shutdown
ou tapez
source .bash_aliases
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.
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.
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.