원격 시스템에 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'