Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

Unix: утилита screen или как восстанавливать разорванную сессию ssh

Практика



Нередко можно встретить ситуацию, когда Вы подключаетесь к 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...

создано: 2017-05-09
обновлено: 2024-11-14
1370



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей

Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Компьютерные сети

Термины: Компьютерные сети