DISPLAY=:0 を含むコードを実行するための画面コマンドを取得できません。

DISPLAY=:0 を含むコードを実行するための画面コマンドを取得できません。

リモートシステムにSSHを介して接続し、GUIを開くシェルスクリプトを実行しようとしています。 GUIがリモートシステムで開いて開いていることを望みます(それで私は使用しますDISPLAY=:0 nohup)。私は試した:

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

これは機能しますが、シェルスクリプトから呼び出されたGUIがコマンドラインを占有しているため、ウィンドウを閉じないと他のコマンドを送信することはできません。試してみましたが、"DISPLAY=:0 nohup ~/<script-to-be-run>.sh &"同じ"DISPLAY=:0 nohup ~/<script-to-be-run>.sh && exit"結果が表示されます。 GUIが開き、コマンドラインはフリーズしたままです。

シェルセッションでdetachコマンドを使用する方法について読みましたscreenが、うまくいかないようです。リモートシステムで(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'

関連情報