Восстановление подключения к SSH после внезапного отключения или управление сессиями с помощью screen

Программа screen позволяет создавать несколько консольных сессий в одной «виртуальной» сессии, удобно отключаться и подключаться к виртуальной сессии без потери результата работы.

Подробное описание

В Ubuntu (с какой версией?) пакет screen уже в поставке. Во FreeBSD ставим из порта sysutils/screen.

1. Итак, подключились по SSH к удаленной машине. Сразу запускаем сессию screen:

# screen

Нажимаем <пробел> или <Enter> и входим в сессию screen. Запустим для примера в данной сессии чтение журнала messages:

# tail -F /var/log/messages

2. Создадим новую сессию screen, для этого нажмем сочетание клавиш <Ctrl>+<a> а затем <c>. Откроется новая виртуальная сессия screen. Запустим в ней, скажем, чтение почтового лога:

# tail -F /var/log/exim/mainlog

3. Посмотрим список окон в нашей виртуальной сессии: <Ctrl>+<a> а затем <">:

Num Name                                                                  

  0 csh                                                                      
  1 csh 

Видим списком перечисление сессий, к каждой можно подключиться.

4. Переименуем окна сессий в удобные для нас имена: <Ctrl>+<a> а затем <Shift>+<a>. Т.е. переключившись в нужную сессию, нажимаем указанное сочетание клавиш и вводим название. Т.о. у меня получился такой список:

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: