如何在 Windows 11 启动时以服务方式运行 WSL

如何在 Windows 11 启动时以服务方式运行 WSL

Debian 上的 Postgres 服务器应该在 Windows 11 启动时运行。

Debian 安装使用

wsl --install Debian

Debian 中的 Postgres 使用

sudo apt install postgresql-12

创建/etc/wsl.conf方式如下这个答案

[boot]
command="service postgresql start"

创建了在启动时运行的任务计划程序任务。尝试从中运行命令

wsl

wsl -u root 

我尝试运行 VB 脚本这里

set object = createobject("wscript.shell") 
object.run "wsl.exe", 0

但是,如果重新启动 Windows,WSL 和 Postgres 将不会启动。

解决方案这个答案似乎已经过时了,因为/etc/wsl.conf应该用来在 WSL 中运行守护进程。

如果从命令行运行 VBS 脚本,则启动 Postgres 服务器。

如何在 Windows 11 启动时将 Debian/Postgres 作为服务运行?应该使用 SrvAny、NSSM 还是启动计划任务?

wsl --version返回

Verze WSL: 1.0.3.0
Verze jádra: 5.15.79.1
Verze WSLg: 1.0.47
Verze MSRDC: 1.2.3575
Verze Direct3D: 1.606.4
Verze DXCore: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
verze Windows: 10.0.22621.1105

答案1

看来,当 WSL 被移至微软商店时,它就破坏了将其作为服务或计划任务启动的能力,因为它将不再在会话 0 中运行。

这些结论可以从与微软 Windows 子系统 Linux 团队的讨论中推断出来,在 github 上

肯定会让它变得没那么有用。只有来自 MS 的信息表明他们正在努力解决这个问题。他们是否在努力还有待观察。

答案2

startWsl2Services.bat您可以在 shell:startup 文件夹中创建一个批处理文件(Win-R,类型shell-startup):

@echo off
echo "Starting Ubuntu-22.04..."
wsl -d Ubuntu-22.04 -u root service dbus start
echo "Done"

Debian或者你想在用户登录后启动的任何发行版(在你的情况下)和服务

相关内容