无法获取屏幕命令来执行包含 DISPLAY=:0 的代码

无法获取屏幕命令来执行包含 DISPLAY=:0 的代码

我正在尝试 ssh 到远程计算机并运行 shell 脚本,这会打开 GUI。我希望 GUI 在远程计算机上打开并保持打开状态(所以我使用DISPLAY=:0 nohup)。我试过:

ssh -t <user-name>@<remote-host> "DISPLAY=:0 nohup ~/<script-to-be-run>.sh"

这很有效,但我无法在不关闭窗口的情况下发送另一个命令,因为 shell 脚本中调用的 GUI 占用了命令行。我尝试使用"DISPLAY=:0 nohup ~/<script-to-be-run>.sh &""DISPLAY=:0 nohup ~/<script-to-be-run>.sh && exit",但它们产生相同的结果:GUI 打开并且命令行保持挂起状态。

我读到有关使用screen从 shell 会话中分离命令的信息,但这似乎不起作用。在远程机器上(不通过 ssh 运行,只是坐在它前面),我尝试了:

screen -m -S 'test' 'DISPLAY=:0 nohup ~/<script-to-be-run>.sh'

但我收到错误:

Cannot exec 'DISPLAY=:0 nohup ~/<script-to-be-run>.sh':No such file or directory

该命令DISPLAY=:0 nohup ~/<script-to-be-run>.sh在远程计算机上运行时(坐在远程计算机前面)运行得很好。有人知道如何使用此命令,screen以便我可以在自己的终端容器中运行单个 GUI 命令吗?

答案1

通常,screen接受命令和参数,因此这可能有效:

screen -m -S 'test' nohup ~/<script-to-be-run>.sh

因为它不需要变量赋值,并且变量可能会被重置,所以您可能需要添加env来设置变量:

screen -m -S 'test' env DISPLAY=:0 nohup ~/<script-to-be-run>.sh'

相关内容