リモートシステムに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'