我正在尝试使用所述方法从 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