Сохранять сеансы SSH после отключения

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

189 голосов | спросил λ Jonas Gorauskas 14 AM00000040000003631 2010, 04:15:36

8 ответов


190

Используйте nohup , чтобы ваш процесс игнорировал сигнал зависания:

  $ nohup long-running-process & amp;
$ exit
 
ответил Warren Young 14 AM00000090000005831 2010, 09:00:58
136

Вы хотите использовать GNU Screen. Это супер удивительно!

  ssh [email protected]
screen # начать сеанс экрана
вводного а-долго-процесс
 

CTRL + a , d , чтобы отменить сеанс экрана

  exit #disconnect с сервера, в то время как run-a-long-process продолжается
 

Когда вы вернетесь на свой ноутбук:

  ssh [email protected]
screen -r # возобновить сеанс экрана
 

Затем проверьте ход вашего долгого процесса!

screen - очень всесторонний инструмент и может делать гораздо больше, чем то, что я описал. Во время сеанса экрана попробуйте ctrl + a ,? чтобы узнать несколько общих команд. Вероятно, наиболее распространенными являются:

  • CTRL + a , c , чтобы создать новое окно
  • CTRL + a , n , чтобы перейти к следующему окну на экране сеанса
  • CTRL + a , p , чтобы переключиться на предыдущее окно на экране сеанса
  • Если вы входите в систему из нескольких систем, возможно, вы случайно не подключились к сеансу активного экрана на другом компьютере. По этой причине я всегда возвращаюсь с помощью screen -d -r , чтобы убедиться, что если другая оболочка подключена к моему сеансу экрана, он будет отсоединен, прежде чем возобновлять его в текущей системе.
ответил Sandy 14 AM00000050000001731 2010, 05:04:17
39

Если вы еще не запланировали и установите screen и т. д., просто выполните следующие действия:

  1. Если ваш процесс запущен в фоновом режиме: goto # 3, else: Ctrl-Z , чтобы приостановить процесс переднего плана. Это сообщит о задании # приостановленного процесса, например:

      [1] + Остановленное имя процесса
     
  2. Отправьте имя_процесса на фон с помощью bg% 1 (используя то, что задание # соответствует % ). Это возобновит processName в фоновом режиме.

  3. Отключить имя_процесса с помощью < code> disown% 1 или отключить PID . Используйте флаг -h , если вы хотите сохранить право собственности до тех пор, пока не закончите свою текущую оболочку.

ответил Mike Covington 30 +04002011-10-30T20:19:54+04:00312011bEurope/MoscowSun, 30 Oct 2011 20:19:54 +0400 2011, 20:19:54
14

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

Экран позволяет запускать несколько сеансов виртуальных терминалов в одном сеансе ssh. учебник и страницы справки .

byobu - это оболочка, которая позволяет легко открывать новые экраны с помощью простой функции вместо комбинации клавиш из ctrl-a. Он также показывает строку состояния со всеми открытыми виртуальными терминалами, которые можно назвать.

Еще одна приятная особенность - тот факт, что весь экран может оставаться включенным, пока ваше соединение ssh отключено. Вы просто подключаетесь снова через ssh и вызываете byobu, и все как раньше.

Наконец-то скриншоты byobu.

ответил txwikinger 14 AM000000110000001331 2010, 11:00:13
8

Возможно, стоит отметить, что

ssh -t lala screen -rxU moo будет прикрепляться к сеансу moo на хосте lala

ssh -t lala screen -S moo создаст сеанс moo на хосте lala

и

ssh -t lala screen -S moo quux создаст сеанс moo на хосте lala и запустит программу quux , завершив сеанс по завершении.

ответил cjac 15 PM00000010000005131 2010, 13:11:51
3

Здесь вы можете найти хорошее руководство: Сохраните сеанс SSH, когда вы Отключить

  sudo apt-get install screen
 

Теперь вы можете начать новый сеанс экрана, просто набрав экран в командной строке. Вам будет показана информация о экране. Нажмите Enter, и вы будете в обычном режиме.

Отключить (но оставить сеанс работы) Нажмите Ctrl + A , а затем Ctrl + D сразу же. Вы увидите сообщение [снято]

Чтобы снова подключиться к уже запущенному сеансу

  screen -r
 

Чтобы повторно подключиться к существующему сеансу или создать новый, если он не существует

Экран
  -D -r
 

Чтобы создать новое окно внутри сеанса сеанса работы Хит Ctrl + A , а затем C немедленно. Появится новое приглашение.

Чтобы переключиться с одного экрана на другое Нажмите Ctrl + A , а затем Ctrl + A в непосредственной последовательности.

Чтобы отобразить окна с открытым экраном Нажмите Ctrl + A , а затем W в следующей последовательности

ответил Victor Hugo Arango A. 22 ThuEurope/Moscow2016-12-22T08:56:00+03:00Europe/Moscow12bEurope/MoscowThu, 22 Dec 2016 08:56:00 +0300 2016, 08:56:00
2

Старый вопрос, странный, еще никто не советовал tmux , который действует как обертка для n консолей и держит их открытыми пока это не понадобится. Это позволяет контролировать больше, помимо ряда функций tmux. Легко управлять им, вы просто выполняете tmux, который выводит вашу оболочку, запускает ваше рабочее задание, а затем нажимает ctrl + b, за которым следует d (detach) ( ctrl + b - это «ok google "из tmux, а d - это команда для закрытия без выхода из оболочки). Это действительно работает, если вы просто закрываете, например, шпатлевку. После обеда, когда вы снова подключаетесь, вы можете повторно открыть tmux с помощью tmux attach , чтобы увидеть ваш экран точно так же, как вы ушли. Что-то, что мне нравится, это разбиение панели: ctrl + b , а затем нажмите ". Чтобы перейти с одной панели на другую, ctrl + b , а затем нажмите стрелка вверх /вниз.

ответил nnsense 13 52015vEurope/Moscow11bEurope/MoscowFri, 13 Nov 2015 18:16:41 +0300 2015, 18:16:41
1

Я использую NX NoMachine, который бесплатно для меня, потому что это только я. По сути, он запускает сеанс X на сервере, к которому вы можете подключаться и отключаться снова и снова. Сеанс X продолжает работать, когда вы не подключены. Соединения могут быть сделаны из любого места. Вы можете выбирать между плавающими окнами или одним окном, содержащим весь рабочий стол (например, полный рабочий стол Gnome). Клиент (который вы запускаете на своем ноутбуке) можно запустить в Linux, MacOS, Solaris или Microsoft Windows. В последнем случае, если вы выбираете плавающие окна, они отображаются отдельно на панели задач Windows.

Я использую свой ноутбук для Windows XP (который мне нужен для определенного оборудования для Windows, который у меня есть) в качестве интерфейса для моих двух Linux-серверов с использованием NX Nomachine. Я даже могу распечатать на принтере, подключенном к моему ноутбуку Windows от Linux.

ответил Rob_before_edits 30 +04002011-10-30T09:04:14+04:00312011bEurope/MoscowSun, 30 Oct 2011 09:04:14 +0400 2011, 09:04:14

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132