Консольный оконный менеджер Screen. Работаем в терминале с удобством.
Было время, когда параллельно основному месту работы, я подрабатывал удаленно в техподдержке у одного хостинг-провайдера (занимались в основном выделенными серверами на 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, начинаются с комбинации клавиш 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, здесь лишь хотелось дать представление о столь интересном иструменте. Будут вопросы - пишите.
Если считаете статью полезной,
не ленитесь ставить лайки и делиться с друзьями.