2016-10-03 4 views
2

원격 컴퓨터 (필자는 ssh)에서 Python 코드를 실행 한 다음 Tmux를 사용합니다. 원격 컴퓨터에서 연결을 끊을 때까지 코드가 제대로 실행됩니다. Tmux를 통한 연결의 요점은 내가 원격 기계에 연결되어 있지 않아도 코드가 계속 실행된다는 것입니다. 나중에 다시 연결하면 다음과 같은 오류 메시지가 표시됩니다.ssh + tmux 세션을 분리 할 때 Python 코드가 "X 서버에 연결할 수 없습니다"라는 오류가 발생합니다.

: cannot connect to X server localhost:11.0 

왜 이런 일이 발생했는지 또는 어떻게 중지시킬 수 있습니까?

+1

코드를 표시 할 수 있습니까? – d33tah

+1

백그라운드에서 실행 해 보셨습니까? – pferate

+1

그 오류는 꽤 명백합니다. 로컬 X 서버를 사용하고 있습니다. –

답변

2
cannot connect to X server localhost:11.0 

... 당신의 코드가 X 서버 (GUI 환경)에 연결하려고 시도하고 있음을 의미합니다. 아마도 당신의 SSH 세션을 통해 전달 될 것입니다. tmux은 터미널 애플리케이션에 대해 세션 연속성을 제공합니다. X 서버를 에뮬레이트 할 수 없습니다.


어떤 GUI의 모든에 연결 할 수있는을 중지하려면

(과 아마도 소프트웨어가 thusly 히 작성된 경우에도 시도에서) 코드를 실행 해제의 DISPLAY 환경 변수 전에.

이로 인해 오류 또는 예외가 발생하는 경우 해당 오류를 생성하는 코드는 이후 오류의 원인이되는 코드와 같습니다. 당신은 여전히 ​​존재하는 가짜 GUI 환경을 만들려면


, 당신은 너무, Xvfb가로 할 수 있습니다. 그런데

# prevent any future commands in this session from connecting to your real X environment 
unset DISPLAY XAUTHORITY 

# run yourcode.py with a fake X environment provided by xvfb-run 
xvfb-run python yourcode.py 

, Xvfb가 운영하는 버그의 존재에 대한 참고 사항에 대한 질문 xvfb-run unreliable when multiple instances invoked in parallel, 가능한 수정을 참조하십시오

일부 리눅스 배포판은 당신을 위해이 설정을 자동화 할 수는 xvfb-run 래퍼를 제공 같은. 당신은 당신이 실제로에서 분리하고 TMUX 터미널 응용 프로그램을 제공 것과 유사한 기능을 GUI 응용 프로그램을 실행시키는, 이후에 다시 부착 할 수있는 X 서버를 원하는 경우


X11vnc 또는 유사한 도구를 사용하는 것이 좋습니다.

+0

매우 유용합니다. 왜 내 코드가 GUI 연결을 만들려고했는지 모르겠다. 아무 것도 보여줄 것을 요구하지 않았기 때문이다. 그러나 이제는 문제가 어디 있는지 알고, 조금 실험 할 수 있습니다. 감사! – user1551817

+0

아. 종종, GUI 라이브러리를 초기화하면 실제로 창을 표시하지 않고도 연결을 시도 할 수 있습니다. –