Bon*_*ero 11 windows-subsystem-for-linux wsl2
如何在 WSL2 启动时启动 OpenSSH 服务器等服务?目前,每次 WSL2 启动时我都必须重新启动它sudo service ssh start
。
Not*_*1ds 16
WSL 启动时运行任何服务的首选方式取决于您的 Windows 版本:
/etc/wsl.conf
现在,您可以通过使用以下命令创建/编辑(通过 sudo)来启动实例时执行任意命令行:
[boot]
command="service ssh start"
Run Code Online (Sandbox Code Playgroud)
此命令以 root 身份运行并且不生成任何输出。如果您需要运行多个命令,它们应该在字符串&&
内用分号分隔(或类似的内容)command=
。
更新:在我看来,此功能中存在一个错误,如果未使用 WSL 实例,即使使用 启动的进程boot.command
仍在运行,也会导致 WSL 实例终止。对于许多用户来说,这可能不是问题,因为您可能无论如何都在运行该实例,并注意到或关心它在退出 shell 时是否停止,但您应该注意该行为。
在 Windows 10 的 WSL 上,您需要通过用户的 shell 启动脚本之一来启动服务。
在您的 中使用以下语法~/.bash_profile
:
wsl.exe -u root service ssh status || wsl.exe -u root service ssh start
Run Code Online (Sandbox Code Playgroud)
wsl.exe -u root
优点是sudo
每次启动时不需要输入密码。从 PowerShell 和 CMD 中,可以在不使用 的情况下调用它exe
,但从 WSL 中,它确实需要扩展。
当然,您也可以使用sudoers
来抑制对密码的要求,但 WSL 只是使这变得不必要。
请注意,每次启动时都会生成一两条消息。要抑制这种情况,请使用以下语法:
wsl.exe -u root service ssh status > /dev/null || wsl.exe -u root service ssh start > /dev/null
Run Code Online (Sandbox Code Playgroud)
这些方法用于在 WSL 启动时运行命令,这是一个相当简单的情况。在其他超级用户问题中还有更复杂的变体,这些问题将:
归档时间: |
|
查看次数: |
18690 次 |
最近记录: |