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'

관련 정보