질문
계산 집약적인 애플리케이션을 사용하고 있습니다.필요X11이 실행됩니다. 원격 서버에서 실행하고 싶습니다(당연히 X11 실행).
X11을 전달할 필요는 없고 단지 서버에서 작동하기 위해서만 필요합니다.
자세한 내용은
서버에서 애플리케이션을 실행하면(즉, 컴퓨터에 물리적으로 연결된 키보드를 사용하는 경우) 모든 것이 제대로 작동합니다. 내 문제는 서버에 항상 물리적으로 액세스할 수 없기 때문에 SSH 연결을 통해 원격으로 이 애플리케이션을 시작하고 싶다는 것입니다.
어떻게 작동하는지 잘 모르겠지만 다음 명령을 실행하면노예 기계(예: 키보드 사용):
$ xhost +
$ DISPLAY=:0 ./run-my-app
그런 다음 아무런 문제 없이 SSH를 통해 애플리케이션을 실행할 수 있습니다 ( ). 이제는 SSH를 통해 실행할 수 없습니다 xhost +
. 어쨌든 보안 관점에서 볼 때 이는 나쁜 생각처럼 들립니다.
실행하지 않으면 xhost +
다음과 같은 결과가 출력됩니다.
프로토콜이 지정되지 않았습니다.
xauth: (argv):1: 디스플레이 ":0"을 열 수 없습니다.
어쨌든, X11에서 원격으로 애플리케이션을 실행하지 못하게 하는 보안 기능(액세스 제어)이 있는 것 같습니다. 그러나 요점은 서버(물리적 시스템에 연결된 키보드)에서 애플리케이션을 시작할 때 발생하는 일보다 더 많은 일이 발생하는 것을 원하지 않는다는 것입니다. 전달 없이 원격으로 시작/중지하기만 하면 됩니다.
이를 수행할 수 있는 방법이 있습니까?
유제
그것은 비슷해 보인다서버의 X11이 전달되지 않음그리고Linux에서 Firefox 헤드리스를 실행하는 방법(예: libgtk-x11-2.0.so.0이 필요 없음)?, 그러나 이러한 경우에는 가상 서버를 사용할 수 있습니다.wxya, 나에게는 작동하지 않습니다. 또한 내 서버에서 실행되는 X 서버가 있고 그것이 꼭 필요합니다.
답변1
실행 중인 세션 환경의 복사본을 훔칩니다.
pid="`pgrep process_name\$ -U $USER`"
env `tr '\0' ' ' < "/proc/$pid/environ"` program_name
적절한 값 process_name
: X11 환경에서 실행될 것으로 알고 있는 것