최근에 이런 일이 발생하기 시작했습니다. 나는 다음을 실행
/usr/bin/emacsclient --alternate-editor="" --no-wait -c
합니다.
오류: 디스플레이: 0.0을 열 수 없습니다.
다른 어떤 앱도 이 작업을 수행하지 않습니다.
출력 xdpyinfo
:
name of display: 0.0
version number: 11.0
vendor string: The X.Org Foundation
vendor release number: 10707000
X.Org version: 1.7.7
편집하다: 이전 Emacs 서버/데몬이 아직 실행 중이라는 것을 발견했습니다.
$ ps ux | grep [e]macs
richard 2642 0.0 0.8 38788 24984 ? Ss Jun22 0:25 emacs --daemon
richard 7512 0.0 0.6 33896 19720 ? Ss Jun23 0:05 emacs --daemon
richard 15458 0.0 0.6 32836 19076 ? Ss 09:40 0:01 emacs --daemon
로그아웃할 때 끄는 방법 아시는 분 계신가요?
답변1
추가 정보를 보면 귀하의 emacsclient가 "잘못된" emacs 서버에 연결되어 있는 것 같습니다. (또는 첫 번째 것을 시작하는 것이 더 좋습니다. emacs --daemon
통신 소켓이 이미 사용 중이기 때문에 후속 호출은 서버를 시작하지 못합니다.) 이전 X 세션에서 emacs 데몬이 시작된 경우 X에 대한 잘못된 연결 자격 증명을 사용하여 표시됩니다. 그래서 실패합니다.
비그래픽/tty 모드로 서버에 연결하여 다음 옵션을 사용하여 터미널에서 -nw
emacsclient를 실행하면 어떤 emacs 프로세스가 서버를 실행하고 있는지 확인할 수 있습니다.
emacsclient -nw
emacsclient를 통해 LISP 코드를 실행하도록 하여 실행 중인 emacs를 종료할 수 있습니다.
emacsclient -t --eval '(progn (server-save-buffers-kill-terminal 1) (save-buffers-kill-emacs 1))'
어디:
- 이 옵션(또는
-t
별칭)은 Emacs가 X 디스플레이에 연결되는 것을 방지합니다.-nw
--tty
server-save-buffers-kill-terminal
Emacs에게 중지하라고 말하기 전에 emacsclient를 분리하십시오(그렇지 않으면 확인 프롬프트가 표시됩니다).- 이
save-buffers-kill-emacs
함수는 일반적으로 Emacs에게 확인을 요청하지 않도록C-x C-c
지시하는 인수와 함께 호출됩니다.1
또한, 나는 당신이 너무 많이 실행하는 이유 emacs --daemon
는 다음 옵션을 사용하여 emacsclient를 호출하기 때문이라고 추측합니다 --alternate-editor=""
.매뉴얼 페이지 emacsclient(1)지적했다:
(대체) EDITOR의 값이 빈 문자열인 경우 Emacs는 데몬 모드에서 시작되고 emacsclient는 이에 연결을 시도합니다.
emacs --daemon
.gnomerc
X 세션 시작 스크립트(예: GNOME 세션 구성)에서 시작하는 것이 세션 종료 시 세션 관리자가 emacs 데몬 종료를 처리하도록 하는 더 나은 옵션일 수 있습니다 .
답변2
무슨 일이 일어났는지 추측한 것 같아요. 문제를 해결하는 방법을 알려드릴 수 있도록 로그인하고 Emacs를 시작하는 방법에 대해 더 많이 알아야 합니다.
X 프로그램이 X 디스플레이에 연결하려면 두 가지 정보가 필요합니다. 일반적으로 DISPLAY
환경 변수 에서 가져오는 표시 이름을 알아야 합니다 . 또한 X 쿠키라는 표시용 비밀번호가 필요합니다. 이 비밀번호는 일반적으로 ~/.Xauthority
환경 변수 로 표시되거나 호출되는 파일 에 저장됩니다 XAUTHORITY
. (자세한 설명은 여기를 참조하세요)
:0.0
Emacsclient가 올바른 표시 정보( )를 기본 Emacs 프로세스에 전달하지만 X 쿠키를 전달하지 않는 것 같습니다 . 일반적으로 Emacsclient는 자체 환경( XAUTHORITY
존재하는 경우 포함)을 Emacs 서버로 보내고 두 프로세스 모두 동일한 파일 시스템에 액세스하여 쿠키 파일을 읽습니다. 여기서는 실패합니다.
그 이유를 알아보려면 다음 질문에 대한 답변이 유용할 수 있습니다.
- 의 가치는 무엇입니까
$XAUTHORITY
? (미설정시 해당 값은 처럼 동작합니다~/.Xauthority
.) - 이 파일은 어디에 있으며 해당 권한은 무엇입니까?
- Emacs 프로세스와 현재 클라이언트가 어떻게든 다른 컨텍스트(컴퓨터, 사용자, chroot 등)에서 시작됩니까?
- Emacs 프로세스마다 다른 값이 있나요
$XAUTHORITY
? (ps -C emacs wwe
또는grep -az XAUTHORITY= /proc/$(pidof emacs)/environ
) - 어떻게 로그인합니까(디스플레이 관리자(무엇보다도), 텍스트 모드, SSH를 통해...)? Emacs 프로세스는 어떻게 시작됩니까(어디에서 언제)? 데몬으로 시작되었나요?