====== Восстановление подключения к 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~~