Сообщение emacsclient отказано

Я запускаю emacs в режиме демона, и я отключился от сервера, на котором он был запущен. После повторного подключения, когда я запускаю

emacsclient -nc 

Я получаю ошибку

connect localhost port 6012: соединение отклонено

ОШИБКА : Показать localhost: 12.0 невозможно открыть

Демон по-прежнему работает, но я не могу понять, как подключиться к нему, какие-либо предложения?

Другие интересные факты, которые могут быть или не быть релевантными:

Я подключен через сеанс экрана к головному узлу, а затем к другому боковому узлу сервера.

Я запускаю эту настройку в течение нескольких дней, и обычно я могу повторно подключиться без проблем.

Я уверен, что я мог бы просто перезапустить демон, но я бы хотел восстановить рабочий сеанс, поскольку он связан с выполняемой работой matlab, с которой я взаимодействую с помощью matlab-emacs.

Редактировать: я попробовал Gilles предложение, и я все еще сталкиваюсь с проблемами

 echo $DISPLAY 

возвращается

локальный: 18,0

Я пошел в сеанс экрана и побежал

 export DISPLAY=localhost:18.0 

и даже снова запустил echo $ DISPLAY внутри сеанса экрана

локальный: 18,0

Теперь emacsclient -nc возвращается

ОШИБКА : отображение localhost: 18.0 невозможно открыть

который теперь является тем же самым дисплеем, который используется на компьютере, на котором выполняется сеанс экрана, но при этом отсутствует соединение.

Обратите внимание, что я также

  export display=localhost:18 

edit2: Заметка о моей системной архитектуре. Мой ноутбук, в моем офисе, подключен через ssh к серверу «host1». host1 имеет несколько компьютеров узлов. Сначала я создаю или запишусь на сеанс экрана

  screen -S ohnoplus-five 

и затем подключитесь к node005 с помощью

 ssh node005 

Затем я отсоединяюсь от экрана без выхода из узла005 и снова присоединяюсь к

screen -r ohnoplus-five

от host1

В ответ на предложения Gills я выполнил экспорт DISPLAY = localhost18.0, который является отображением, возвращаемым echo $ DISPLAY на host1, а не моим локальным ноутбуком.

One Solution collect form web for “Сообщение emacsclient отказано”

Соединения удаленного GUI (X11) проходят через порт TCP 6000+ n, где n – номер дисплея¹. Таким образом, два сообщения относятся к одной и той же проблеме: некоторые программы пытались подключиться к отображению 12 и не удалось.

Emacsclient не делает соединений X11, Emacs делает. Поэтому, если вы видите это сообщение, это означает, что Emacsclient удалось связаться с Emacs и сообщить ему, чтобы открыть новый фрейм. Emacsclient запрашивает кадр графического интерфейса, если он считает, что имеется дисплей X11, и кадр терминала в противном случае. Когда задана переменная среды DISPLAY , Emacsclient считает, что дисплей X11 доступен.

Переменная среды DISPLAY устанавливается автоматически SSH, когда она пересылает соединение X11 обратно на ваш локальный компьютер. Но когда вы присоединяетесь к существующей сессии экрана, вы получаете среду, которая была установлена ​​в сеансе экрана, включая переменную DISPLAY . Если вы отключите и снова подключитесь, нет гарантии, что номер дисплея одинаковый2.

Чтобы обновить переменную DISPLAY , отделитесь от сеанса экрана, запустите echo $DISPLAY чтобы увидеть значение, заданное SSH (например, localhost:13 ), затем повторно подключайтесь к сеансу экрана и запускайте export DISPLAY=localhost:13 (или независимо от того, является). Если в сеансе экрана есть несколько окон, вам нужно сделать это в каждом из них. Если вы создаете новые окна, наберите Ctrl + A : setenv DISPLAY localhost: 13` Enter, чтобы установить переменную среды в самом экране, для новых окон.

Если вы предпочитаете, вы можете открыть рамку терминала, отключив DISPLAY или выполнив emacsclient -nw .

¹ SSH использует номера дисплеев, начиная с 10, оставляя только номера 0-9 для локальных дисплеев. В типичной ситуации дисплей 12 означает, что это третье GUI-соединение, которое было открыто через SSH.
² На самом деле, если вы отключились из-за проблемы с сетью, но вскоре после этого подключились, вполне возможно, что удаленная машина еще не заметила проблему с сетью – все, что она знает, это то, что прошло какое-то время, поскольку клиент отправил что-нибудь, но это просто нормальная бездеятельность, и в этом случае дисплей 12 все еще используется для удаленной машины.


Если у вас несколько переходов SSH, а соединение с локальной машиной на промежуточную машину прерывается и возобновляется, то при возобновлении номер дисплея на промежуточной машине изменился, но соединение SSH от промежуточной машины до конечной машины все еще сохраняется пересылает исходный номер дисплея.

В этом случае было бы проще, если бы вы запускали Screen только на последней машине и использовали промежуточную машину в качестве прокси . Добавить

 Host node[0-9]* ProxyCommand ssh -W %h:%p host1 

к вашему ~/.ssh/config и запустите ssh node005 . Тогда вам не нужно беспокоиться о промежуточной машине.

Если вам нужно запустить Screen на промежуточной машине, вам придется перезапустить SSH-соединение с host1 на node005 после обновления переменной DISPLAY . (Вы также можете перенаправить TCP-соединение со старого номера дисплея на новый, но это будет работать, только если старый номер дисплея не был повторно использован.)

  • Запуск приложения GUI при перезагрузке
  • Почему сервер Xnest имеет другой glxinfo, чем обычный сервер Xorg?
  • X.org работает без сокета в chroot?
  • Монетный двор: startx от tty грузы X в китайском
  • Модель для разрешения Dell U2415 1920x1200
  • X-сервер, запущенный kdm, умирает во время запуска из-за невозможности загрузки ключевой карты
  • Является ли `/ etc / X11 / xorg.conf` устаревшим?
  • Индикатор изменения макета клавиатуры
  • Emacs не откроется в графическом режиме в gnome
  • Остановите моего коллегу от наблюдения за моей X-сессией
  • Передача SSH X11 на другой монитор
  • Interesting Posts

    Работаем через выход dmesg на пользовательском ядре 3.5.4

    Файлы Rsync – из проблемы

    Множественные модификаторы модификации расширения в одном выражении

    Могу ли я каким-то образом обновить сжатые архивы?

    Резервный сценарий и перемещение файлов на другой сервер

    Как использовать VLC для создания эффекта видеостены

    Gsub поддерживать строку между ними;

    почему Linux загружается только на моем компьютере, когда я добавляю pci = noacpi в grub? Должен ли я заменить свой ноутбук? Это достаточно серьезно?

    Как я могу заставить John the Ripper работать с последней версией debian или ubuntu?

    Объединить вывод сценария в тело письма и отправить его как одно электронное письмо?

    / dev / root не существует в CentOS 7

    Запустите `grep`, исключая файл по определенному пути

    Что вызывает проблемы локализации в debian?

    Не удается установить LVMm: возобновить ioctl при неудачном

    Emacs, как интерпретировать этот отчет отладчика Lisp

    Linux и Unix - лучшая ОС в мире.