WSL2 从 Windows 运行 xrdp 服务

WSL2 从 Windows 运行 xrdp 服务

我正在尝试使用所述方法从 Windows 启动 xrdp这里,但当我运行命令时wsl sudo service xrdp start,xrdp 无法正常启动。service xrdp status 以我的 linux 用户身份运行返回

 * could not access PID file for xrdp-sesman
 * xrdp is not running

我无法通过 RDP 连接。运行wsl -u USER sudo service xrdp start结果相同。我该如何修复这个问题并正确运行服务?

答案1

问题是 xrdp 服务初始化脚本在返回之前不会分离 stdout,并且一旦wsl.exe退出,它会关闭所有管道并终止脚本。

解决此问题的直接 *nix 工具是nohup,但它将输出重定向到文件。

>wsl nohup sudo service xrdp start
nohup: ignoring input and appending output to 'nohup.out'

我发现一个有点奇怪的解决方法是传递命令输出,以cat防止脚本过早终止并传递输出。

wsl bash -c "sudo service xrdp start |cat"

最后我求助于外部文件中的脚本。但是,它可以在一行中编写。幸运的是,cmd在这一行中将所有内容传递给了 bash。

wsl sudo service xrdp start; until service xrdp status; do sleep 1; done

相关内容