Учитывая дополнительную информацию, я предполагаю, что Ваш emacsclient подключает к "несправедливости" emacs сервер. (Или лучше, первый, который был запущен: последующие вызовы emacs --daemon
не запустит сервер, так как коммуникационный сокет уже используется.), Если emacs демон был запущен в предыдущем X сессий, то они используют неправильные учетные данные для соединения с этими X дисплеями и таким образом перестали работать.
Можно узнать, какой процесс emacs выполняет сервер путем соединения с ним в non-graphics/tty режиме; выполненный emacsclient в терминале с -nw
опция:
emacsclient -nw
Можно уничтожить выполнение emacs путем выполнения его код LISP через emacsclient:
emacsclient -t --eval '(progn (server-save-buffers-kill-terminal 1) (save-buffers-kill-emacs 1))'
где:
-t
опция (искажают для -nw
или --tty
) должен избежать Emacs, соединяющегося с этими X дисплеями;server-save-buffers-kill-terminal
отсоединяет emacsclient, прежде чем Вы скажете Emacs останавливаться (иначе, что он выпустит подсказку подтверждения);save-buffers-kill-emacs
функция - то, что обычно вызывается C-x C-c
, аргумент 1
говорит Emacs не просить подтверждение.Кроме того, я предполагаю причину, у Вас есть так многие emacs --daemon
выполнение состоит в том, что Вы вызываете emacsclient с --alternate-editor=""
опция: страница справочника emacsclient (1) состояния, что:
Если значение (альтернатива) РЕДАКТОР является пустой строкой, то Emacs запускается в режиме демона, и emacsclient попытается соединиться с ним.
Это мог быть более оптимальный вариант запуститься emacs --daemon
из Ваших X сценариев запуска сессии (например, .gnomerc
или сессия GNOME configutation) так, чтобы менеджер сеансов заботился об уничтожении emacs демона, когда сессия завершится.
Комментирование моего кода, который звонил ethtool
изменить NIC буферизует сторожевые таймеры, которым мешают, споткнуться bnx2
карта.
Я все еще хочу найти ответ на вопрос о сторожевых таймерах, но я задам другой вопрос
def _linux_buffer_alloc(iface=None, rx_ring_buffers=768,
netdev_max_backlog=30000):
default_rx = 255
default_rx_jumbo = 0
default_netdev_max_backlog = 1000
## Set linux rx ring buffers (to prevent tcpdump 'dropped by intf' msg)
## FIXME: removing for now due to systematic deadlocks with the bnx2 driver
# sample: ethtool -G eth3 rx 768
# cmd = 'ethtool -G %s rx %s' % (iface, rx_ring_buffers)
# p = Popen(cmd.split(' '), stdout=PIPE)
# p.communicate(); time.sleep(0.15)
# sample: ethtool -G eth3 rx-jumbo 0
# cmd = 'ethtool -G %s rx-jumbo %s' % (iface, default_rx_jumbo)
# p = Popen(cmd.split(' '), stdout=PIPE)
# p.communicate(); time.sleep(0.15)
## /FIXME
Я прочитал подобную историю из GeNUA. Их обходное решение должно было перезапустить сетевой драйвер (OpenBSD). На Linux это перевело бы в: ifdown eth3 && rmmod bnx2 && modprobe bnx2 && ifup eth3
.
Базовой проблемой была внутренняя проблема кодирования с указателями в системе PAE в сочетании с broadcom-драйвером.
ethtool -g
возможно, Ваш может повысить получение или буферы передачи для предотвращения этой проблемы.
– Nils
02.05.2012, 23:58