Консольный оконный менеджер Screen. Работаем в терминале с удобством.

Сентябрь, 30th 2011Рубрика: *NIX 11972
Подписаться на комментарии по RSS

Было время, когда параллельно основному месту работы, я подрабатывал удаленно в техподдержке у одного хостинг-провайдера (занимались в основном выделенными серверами на FreeBSD). Так вот там я узнал и стал активно использовать одну замечательную консольную программу - screen.

Screen – это полноэкранный оконный менеджер, который позволяет разделить физический терминал между несколькими независимыми процессами (обычно интерактивными облочками)

Да уж... определение из man звучит несколько заумно и вовсе не способствует приливу энтузиазма для изучения. Значит придется самому раскрыть некоторые прелести этой, без сомнения, нужной и удобной программы.

Чем может помочь screen при работе на удаленных серверах по ssh?

Наверное самым удобным, лично для себя, считаю возможность в любой момент покинуть активную ssh-сессию и в дальнейшем возобновить её.

Поясню на примере - допустим вы начали пересобирать ядро, или запустили какой-то длительный процесс, но дождаться его завершения нет возможности. Screen позволяет отключиться от текущего сеанса не прерывая выполняемой работы. В любой момент вы имеете возможность продолжить работу так, как будто вы и не отключались. Кроме того, при внезапном разрыве ssh соединения с сервером screen-сессия не прерывается, что очень удобно при работе по слабым каналам связи (к примеру GSM модемы).

Второй по значимости поставлю возможность управления несколькими консольными окнами. Суть в том, что screen позволяет, используя единственную ssh сессию, создать несколько окон терминалов, с легкостью переключаться между ними и выполнять различные задачи в каждом из них параллельно.

Следует заметить, что на экране терминала отображается только одно из окон (есть возможность одновременного отображения большего количества - в этом случае окна будут делить экран терминала на части, что на мой взгляд не удобно).

Ну и наконец третий, довольно интересный момент - одновременное подключение нескольких пользователей к одной активной сессии screen. Где такая функция может понадобиться? Например в таком режиме работал консольный icq клиент службы техподдержки, где любой консультант мог отвечать на вопросы, подключившись к активной сессии screen. Так же его вполне можно использовать для обучения новых сотрудников.

Установка screen

Собственно искать сложности тут не стоит. Всё просто и не требует дополнительной настройки, разве что вы возжелаете какие-то экзотические настройки под себя сделать - тогда вам в man. Собираем из портов (естественно у меня FreeBSD), у линуксоидов уже бывает скомпилирована.

# cd /usr/ports/sysutils/screen
# make install

Использование screen

$ screen

Screen, как и любое приложение, запускается стандартно из shell. В зависимости от системы, вы можете получить сообщение о запуске, а можете и не получить… Даже, если терминал с виду не изменился, не переживайте. Вы уже внутри терминала, но только запущенного в screen. Убедиться в этом просто - нажмите Ctrl-a, а затем ?

программа screen FreeBSD

Все управляющие команды в screen, начинаются с комбинации клавиш Ctrl-a.

Немножко поясню как правильно использовать комбинации клавиш (в старости напишу книгу Unix для даунов). Нажали Ctrl и не отпуская a, теперь оставьте Ctrl-a в покое и нажимайте управляющий символ. Приведу комбинации клавиш, которые, на мой взгляд, пригождаются чаще всего:

Код:
Ctrl-a c
Ctrl-a Сtrl-c   - создать новое окно screen'а
Ctrl-a d        - отсоединиться от консольной сессии (detach) и оставить
                  ее запущенной в фоновом режиме.
Ctrl-a Ctrl-a   - переключение между двумя окнами (активным и предыдущим)
Ctrl-a [0..9,-] - переключиться между окнами, или получить пустое окно
Ctrl-a n        - следующее (next) окно
Ctrl-a p        - предыдущее (prev) окно
Ctrl-a k        - закрыть текущее окно с подтверждением (kill)
Ctrl-a \        - закрыть все окна сессии и выйти из Screen
Ctrl-a ?        - справка

Чтобы присоединиться обратно к отсоединенной сессии, или посмотреть список доступных сессий, необходимо запустить Screen с одним из следующих ключей:

$ screen -r	присоединиться к отсоединенной сессии
$ screen -R	присоединиться к первой подходящей отсоединенной сессии
$ screen -x	присоединиться к уже работающей сессии
$ screen -ls	выводит список доступных сессий

Целью статьи не ставилось дать полное описание всех возможные функции этой замечальной программы, для этого есть man, здесь лишь хотелось дать представление о столь интересном иструменте. Будут вопросы - пишите.

Подписывайтесь на канал Яндекс.Дзен и узнавайте первыми о новых материалах, опубликованных на сайте.

Если считаете статью полезной,
не ленитесь ставить лайки и делиться с друзьями.

ваш комментарий будет опубликован после проверки
на указанный адрес будет отправлено письмо с кодом активации. Вы можете настроить собственный профиль и стать активным участником или автором.