Нередко можно встретить ситуацию, когда Вы подключаетесь к Unix-серверу по SSH и работаете с ним, а потом вдруг соединение рвется. Открывая заново сессию SSH Вы, конечно, не обнаруживаете наработок, которые были до разрыва - например, если что-то редактировалось в nano, ee или mcedit и Вы это не сохранили - то ой, как говорится. Точно так-же остаются висеть в памяти открытые программы, например, тот же Midnight Commander.
Желание после воссоединения связи снова увидеть свою незаконченную работу - понятно и объяснимо. Но "из коробки" SSH этого не умеет - делайте сначала.
А что, если у Вас происходила какая-то долгая операция (да та же пересборка ядра или компиляция кучи пакетов во FreeBSD)? Тут потеря связи по SSH может обернуться если не катастрофой, то очень неприятными моментами.
На помощь нам может прийти утилита под названием screen. Она не позволяет восстановить сессию как таковую, зато предоставляет инструмент "позаботился заранее - получил дивиденты".
Смысл ее таков: заходите на сервер по SSH и вместо того, чтобы сразу что-то делать - сначала запускаете утилиту screen, а уже после этого - в ее консоли - работаете как будто в обычной SSH-сессии. В случае обрыва связи, после подсоединения по SSH утилита позволит Вам снова подключиться к ее сессии и продолжить работу.
УстановкаИз коробки screen не идет ни на Linux, ни на FreeBSD. Так давайте установим эту ценную утилиту.
Для Linux Debian/ubuntu:
$ sudo aptitude install screen
Для Linux CentOS/RedHat:
$ sudo yum install screen
Для FreeBSD:
$ cd /usr/ports/sysutils/screen
$ sudo make install clean
на вопрос о конфигурации - оставляем все по-умолчанию.
Подключаемся (создаем сессию)После подключения по SSH введите в консоли просто:
$ screen
и все. Утилита Вам покажет заставку, из которой можно понять, что она бесплатна и что надо нажать на Enter или пробел для продолжения.
А потом... а потом Вы как будто вернетесь в консоль shell (или bash - или что у Вас в качестве интерпретатора). Т.е. увидете все ту же командную строку, как будто утилита просто вылетела и все.
Но она не вылетела - отсюда Вы работаете через screen и можете не бояться за обрыв связи.
Как пользоватьсяМало запустить сессию screen - надо еще научиться пользоваться этой утилитой.
Выход
Чтобы выйти из сессии screen и закрыть терминал (при этом подключиться снова Вы к нему не сможете) - просто наберите exit - как будто выходите из сессии SSH. После нажатия Enter Вас выкинет обратно в родительскую SSH сессию.
Управление внутри Screen
Утилита поддерживает некоторое количество хот-кеев (hot keys) - для управления внутри своего экрана. Команды эти вызываются путем нажатия Ctrl+A и затем - кнопки с нужным действием.
Основые сочитания указаны ниже:
- Ctrl+A, ? : Показать справку по командам
- Ctrl+A, c : Создать новую сессию Screen
- Ctrl+A, n : Переключиться на следующую сессию Screen
- Ctrl+A, p : Переключиться на предыдущую сессию Screen
- Ctrl+A, # : Переключиться на сессию с номером # (вместо # - подставьте номер окна Screen)
- Ctrl+A, " : Показать список открытых сессий
- Ctrl+A, Shift+C : Очистить окно
- Ctrl+A, Shift+F : Подогнать размер окна сессии Screen под текущий размер окна SSH (например, если Вы изменили размер окна PuTTY или терминала X-Window)
- Ctrl+A, Shift+K : Закрыть окно (аналог exit, только аварийно)
- Ctrl+A, d : Свернуть окно - т.е. Вы вернетесь в сессию SSH, но все работающие программы останутся работать в сессии Screen.
Как переподключитьсяИтак, у Вас оборвало сессию SSH или Вы просто свернули окно Screen через комбинацию клавишь "Ctrl+A, d" - и теперь Вам нужно подключиться обратно.
Список текущих окон можно получить, выполнив следующую команду:
$ screen -ls
There is a screen on:
61469.pts-2.mail (Detached)
1 Socket in /tmp/screens/S-user.
А подключиться к нужной сессии:
$ screen -r 61469.pts-2.mail
где вместо 61469.pts-2.mail указывайте сессию, которую видите из предыдущей команды.
Вот, в общем-то, в двух словах о такой замечательной утилите.
Актуально для: Linux Debian, CentOS/RedHat; FreeBSD...
Комментарии
Оставить комментарий
Компьютерные сети
Термины: Компьютерные сети