2015-11-12 2 views
3

это моя ситуация. Обычно я запускаю R с Emacs с помощью ESS в эмулятор терминала на моем локальном компьютере. На моем рабочем месте мы получаем новый сервер под управлением R, поэтому я бы использовал удаленный сервер через ssh. Я подключаюсь через ssh, и все работает хорошо. Что бы я сделал, так это поддерживать консоль R, пока я закрываю свой ноутбук и возвращаюсь домой, поэтому из своего дома я бы снова подключился к существующей сессии R. Я попытался поместить консоль R в фоновом режиме, используя C-q C-z Enter, чтобы остановить процесс, но, пока я закрываю ssh-соединение, процессы пропадают. Не повезло и с bg &. Я также пробовал mosh, но в этом случае я получаю некоторую проблему, связанную с трафиком UDP в сети моей работы. Screen и tmux также не очень полезны из-за их плохого взаимодействия с Emacs eshell. На клиентском и серверном компьютере я запускаю Debian 8 xfce.Background R console и long running session

Есть ли способ сохранить терминал R при закрытии ssh-соединения? Каков ваш подход к длительным сеансам R?

EDIT

Наконец here и here я нашел SOLUTIO, что я ищу. Я пробовал тот же подход, что и в ссылке выше, но с использованием tmux, и я получаю много ошибок. Святой Грааль - это экран. Я попытался выполнить пошаговую процедуру, но я получаю сообщение об ошибке от emacs, пока я пытаюсь подключить сеанс экрана изнутри eshell. Поэтому я попытался использовать ansi-term вместо eshell, и все работает так, как ожидалось. Я могу прикрепить и отсоединить сеанс R. Таким образом, я использую машину удаленного сервера только для вычисления, в то время как R-скрипты находятся на моем ноутбуке. Итак, это работа потока:

  1. ssh на хост-сервер
  2. старт screen сессия
  3. начало R
  4. отрывать screen
  5. выход из сервера закрытия соединения SSH
  6. запустите emacs в качестве демона на вашей локальной машине и откройте emacsclient экземпляра (не обязательно пробег Emacs через emacsclient, но я предпочитаю этот путь)
  7. открыть свой R сценарий
  8. открыть ansi-term (M-x ansi-term)
  9. ssh к серверу из ansi-term
  10. присоедините сессии экрана (screen -r)
  11. подключите пульт дистанционного управления R к местному R сценарию (M-x ess-remote)
  12. для отсоединения от R изнутри с пользой в течение срока использования Ctrl-q Ctrl-a d return

Thats it.Теперь я могу запустить удаленный процесс R, используя локальный скрипт R, закрыв соединение, но оставив открытую консоль R, поэтому я могу снова подключиться к ней в будущем, также с другого IP-адреса.

ответ

5

Это одна из моих любимых тем :) Вот что я делаю:

  • Всегда старт Emacs, как emacs --daemon так, что она работает в фоновом режиме.
  • Всегда запуск emacsclient -nw (для текстового) или emacsclient -c (в x11/графическом режиме) для доступа к демонанизированным emacs в фоновом режиме. У меня есть эти псевдонимы до emt и emx, соответственно.

Теперь вы по существу сделаны. Вы можете ssh в это поле и возобновить работу с любого места, где вы можете запустить ssh, --- который может быть смартфоном или браузером. И ESS, конечно, позволяет вам иметь несколько сеансов R. После M-x R я часто вызываю M-x rename-buffer, чтобы выровнять буфер с именем проекта или идеей, над которой я работаю.

я совмещаю это еще и с

  • byobu (который является причудливым tmux обертки доступен во многих дистрибутивах и на OS X, и первоначально от Ubuntu), чтобы сеансы оболочки сохраняются
  • mosh для таких мест, как работа и дом, где мой ноутбук может просто возобновить

Строго говоря, вы не нужно byobu или mosh для emacs для продолжения (как работает демон за этим), но вы можете захотеть его для всех остальных сеансов оболочки.

Эта установка была моей утилитой goo в течение многих лет на работе и на дому.

+0

Я запустил 'emacsclient -nw' в своем ноутбуке, я вызываю' eshell'l, а не 'ssh' на главный компьютер. Отсюда я начинаю сессию «R». На данный момент я не понимаю, как сохранить процесс 'R', пока я закрываю соединение' ssh' и как его снова присоединять. – Riccardo

+0

Это совсем другой подход, как я изложил. В моем случае emacs живет на сервере (-ах) и остается в живых. Мои связи с ним приходят и уходят, но его сеансы сохраняются. Попробуй. –

+0

ОК, теперь я понимаю. Я также использовал этот подход в прошлом, но я бы изменил его, просто чтобы сохранить файлы сценариев только в моем ноутбуке и использовать сервер только для вычисления. – Riccardo