2 апр. 2012 г.

Использования screen для восстановления терминального подключения при не корректном его завершении

Screen - довольно-таки мощная и полезная утилита для системного администратора. У нее достаточно много ключей и параметров, которые человека нового, непосвященного могут вначале отпугнуть. В этой статье я напишу, как я использую эту утилиту.

Основное назначение screen, как для меня, - подключение к прерванному консольному сеансу. Т. е. вот вы, например, подключились к удаленному веб-серверу и запустили там какой-либо очень важный процесс, которым возможно нужно управлять. И вдруг у вас пропадает ssh-соединение - то ли проблемы с подключением через Интернет то ли еще по какой-то причине... И вы уже не сможете управлять процессом. Чтобы так не произошло - нужно запускать важные такие вещи в скрине.

Для начала установим его (как правило, в стандартную установку он не входит):

yum install screen (для RedHat/CentOS)
aptitude install screen (для Debian/Ubuntu)


Для других дистрибутивов нечто похожее.

Теперь войдите в скрин:

screen

Или выполните команду "в скрине":

screen sudo nano /etc/sudoers

Теперь принудительно закройте терминал с nano (крестиком :) ) После подключитесь заново к этой машине и наберите команду:

screen ls

Вы должны увидеть что-то вроде такого:

There is a screen on:
12836.pts-3.WS102 (04/02/2012 02:58:09 PM) (Detached)
1 Socket in /var/run/screen/S-root.

Где будут указаны открытые скрины и их состояние (Detached значит, что соединение оборвалось или было закрыто). Для подключения к существующему скрину введите команду:

screen -r 12836.pts-3.WS102

Теперь вы увидите ваш открытый ранее nano (ну или что вы там запустили).

screen -r 12836.pts-3.WS102

Выполнение этой команды сделает вначале detach указанному скрину, затем подключит к нему вас (иногда бывает полезно).

screen -S <name>

Эта команда запустит новый скрин с заданным именем (которое отобразится по команде screen -ls)

Управляющие команды в скрине указываются с помощью нажатия Ctrl+A, а затем нужную команду. Все клавиши - в английской раскладке! Например:

  • Ctrl+A, D - сделать detach текущему скрину, т. е. выйти из него - потом можно будет подключиться к нему
  • Ctrl+A, C - создать новое окно скрина. Полезно, если вам необходимо несколько одновременно терминалов на одной машине.
  • Ctrl+A, " - показать меню с выбором окон скрина.
От такая полезная штука этот screen.

screen -T xterm

Стартуя скрин этой командой, мы меняем тип терминала и в mc можно будет использовать мышку, также можно после старта набирать:

export TERM=xterm