====== Восстановление подключения к SSH после внезапного отключения или управление сессиями с помощью screen ====== Программа screen позволяет создавать несколько консольных сессий в одной "виртуальной" сессии, удобно отключаться и подключаться к виртуальной сессии без потери результата работы. * Для чего: для управления сессиями SSH. * Что дает: возможность быстрого "восстановления" сессии SSH, в частности, при внезапном отключении. Знакома ситуация перекомпиляции ядра на удаленной машине, когда внезапно пропадает связь по SSH? Если да, то читаем дальше. ===== Подробное описание ===== В Ubuntu (с какой версией?) пакет screen уже в поставке. Во FreeBSD ставим из порта sysutils/screen. **1.** Итак, подключились по SSH к удаленной машине. Сразу запускаем сессию screen: # screen Нажимаем <пробел> или и входим в сессию screen. Запустим для примера в данной сессии чтение журнала messages: # tail -F /var/log/messages **2.** Создадим новую сессию screen, для этого нажмем сочетание клавиш + а затем . Откроется новая виртуальная сессия screen. Запустим в ней, скажем, чтение почтового лога: # tail -F /var/log/exim/mainlog **3.** Посмотрим список окон в нашей виртуальной сессии: + а затем <%%"%%>: Num Name 0 csh 1 csh Видим списком перечисление сессий, к каждой можно подключиться. **4.** Переименуем окна сессий в удобные для нас имена: + а затем +. Т.е. переключившись в нужную сессию, нажимаем указанное сочетание клавиш и вводим название. Т.о. у меня получился такой список: Num Name 0 messages 1 mail **5.** Пусть в этот момент времени произошел дисконнект, и вы заново подключились к серверу. Набираем в командной строке screen -ls и получаем примерный вывод: # screen -ls There is a screen on: 24122.ttyp0.itcall (Detached) 1 Socket in /tmp/screens/S-root. Значение "Detached" говорит нам о том, что мы отключены от сессии screen. Подключаемся! screen -r 24122.ttyp0.itcal И опять можем подключиться к нужной сессии. Т.е. результат работы в следствии внезапного пропадания связи не потерялся. **6.** Идем дальше Подключим к нашей запущенной сессии другого пользователя, чтобы он мог видеть, что происходит в данный момент на экране. Для этого он должен подключиться по SSH, используя то же имя пользователя, к серверу и ввести в командной строке: # screen -x <имя_сессии> Имя сессии можно посмотреть по screen -ls, а если на сервере только одна сессия screen, то этот параметр можно вовсе не указывать. **7.** Полезные команды screen ^ Сочетание ^ Описание ^ |Ctrl+a, ? |Помощь | |Ctrl+a, c |Создать новое окно в текущей сессии screen | |Ctrl+a, d |Отключиться от текущей сессии screen. Все сессии в screen остаются в рабочем состоянии.| |Ctrl+a, %%"%% |Показать список окон в текущей сессии screen | |Ctrl+a, ' |Переключиться на окно по номеру | |Ctrl+a, n |Переключиться на следующее окно | |Ctrl+a, p |Переключиться на предыдущее окно | |Ctrl+a, Shift+a |Переименовать текущее окно | |Ctrl+a, k|Закрыть текущее окно screen| |Ctrl+a, w|Перечислить списком все окна| TAG: {{tag> sysadmin FreeBSD}} ~~DISCUSSION~~