É possível reiniciar o subsistema Ubuntu sem reiniciar meu sistema?
Tentei usar o shutdown
comando depois de instalar algumas atualizações, mas isso não parece ser uma opção aqui.
O texto da captura de tela:
~$ bin/rcheck.sh
Reboot required.
~$ sudo shutdown -r now
shutdown: Unable to shutdown system
Responder1
Você não pode reiniciar uma distribuição com um único comando. Você deve desligar e inicializar a distro com dois comandos. Se você correrwsl.exe
em vez de wsl
, então funciona tanto no WSL Bash quanto no CMD.
Veja a lista de distros e seu estado atual:
wsl.exe -l -v
Desligue tudo: Build 18917+
wsl.exe --shutdown
Encerre uma distribuição específica: Windows 1903+
wsl.exe -t <DistroName>
Inicialize a distribuição padrão (marcada com *
):
wsl.exe
Inicialize uma distribuição específica:
wsl.exe -d <DistroName>
versões mais antigas
# PowerShell (admin)
Restart-Service LxssManager
# or CMD (admin)
net stop LxssManager
net start LxssManager
Responder2
Em um prompt administrativo do PowerShell:Restart-Service LxssManager
Responder3
Desde o Windows 10 versão 1803, fechar todas as janelas do terminal WSL não eliminará os processos em segundo plano por padrão, a menos que o arquivo /var/run/reboot-required
esteja presente. Este arquivo será criado automaticamente pelo apt no Ubuntu quando uma atualização exigir uma reinicialização, mas se quiser reinicializar manualmente o subsistema, você mesmo pode criar o arquivo:
sudo touch /var/run/reboot-required
Não testei isso em outras distribuições disponíveis na Microsoft Store. Uma solução alternativa é eliminar você mesmo todos os processos:
sudo killall -r '.*'
Responder4
O seguinte permite um desligamento no WSL2 usando o comando
wslreboot
(ou qualquer comando personalizado).
Tecnicamente, wslshutdown
seria mais apropriado para o código abaixo:
Criar alias:
sudo nano ~/.bash_aliases
Adicionar linha:
alias wslreboot='history -a && cmd.exe /C wsl --shutdown'
history -a
garante que o histórico do comando bash seja salvo antes do desligamento.
Habilitar Alias:
Reinicie o WSL
cmd.exe /C wsl --shutdown
ou digite
source .bash_aliases
Usar
agora você pode digitar
wslreboot
Desligar
Estou pensando que você poderia usar uma variação do acima para executar um arquivo em lote com as linhas:
wsl --shutdown
wsl
para uma reinicialização adequada.