Screen — несколько экранов в одной SSH сессии. Screen — несколько экранов в одной SSH сессии Ubuntu screen разные пользователи

5,958 просмотров

Создатели Screen называют утилиту менеджером (псевдо)терминалов. Идея в том, чтобы вместо нескольких терминалов, открытых для одновременной работы с разными пользовательскими программами например по ssh, обеспечить доступ к этим терминалам из одного единственного терминала, как если бы мы работали в «настоящем» TTY и переключались из одного в другой клавишами Alt-Fn.

На самом деле, Screen умеет гораздо больше. Перечислю два её основных достоинства.


Рис. 2. Оба псевдотерминала в одном окне Screen (вверху) вместо двух отдельно открытых окон (внизу).

Прежде чем переходить к описанию утилиты будет полезно договориться о терминологии, следование которой упрощает понимание принципа работы Screen.

1. Термины и определения

Окно (window) — псевдотерминал со своим bash (nonlogin). Окна нумеруются от 0 до 9 (номера окон можно переопределить). Им можно (и желательно) присваивать имена.

Область (region) — прямоугольная область экрана, в которой отображается одно из окон. Экран можно разбить на области как вертикально, так и горизонтально.

Разметка экрана (layout). Это набор областей, на которые разбит экран терминала. Каждой разметке можно присвоить имя и внести в конфигурационный файл, чтобы иметь возможность быстро выбирать их внутри сессии Screen с помощью группы команд layout (см. ниже).

2. Описание команд

Управляющие сочетания клавиш. Для перехода в режим ввода управляющих команд в screen по умолчанию используется Ctrl-a. После нажатия этой комбинации вводится собственно управляющий символ или сочетание, например? (справка по командам) или Ctrl-I (переход в следующую область). Для упрощения изложения в дальнейшем будут упоминаться только сами управляющие сочетания без переключателя Ctrl-a.

Работа с окнами (псевдотерминалами, PTS) с Создать окно с запущенным в нём bash. K Закрыть окно А Переименовать окно r Включение / Выключение переноса строк в терминале " Вывести список окон Работа с областями экрана (regions) s Разбить область на две по горизонтали I (pipe) Разбить область на две по вертикали Tab Переключиться в следующую область экрана Q Закрыть все остальные области и оставить текущую (в которой находится фокус) Работа с сессиями Screen d фоновый режим и вернуться в системную консоль" data-order="Перевести сессию в фоновый режим и вернуться в системную консоль">Перевести сессию в фоновый режим и вернуться в системную консоль

Внутренние команды Screen. Доступны после ввода управляющего символа: (двоеточие).

mousetrack on Включить поддержку мыши для переключения между областями. При этом блокируется возможность копирования / вставки по правому щелчку мыши в окне ssh-клиента Putty. Эта функция почему-то пропадает после "открепления" сессии Screen и возвращения в неё. layout show конфигурационном файле" data-order="Просмотреть список разметок экрана, заданных в конфигурационном файле">Просмотреть список разметок экрана, заданных в конфигурационном файле layout select Выбрать заданную в конфигурационном файле именованную разметку экрана либо по номеру (n) либо по названию (title). layout save XXX Эту команду нужно выполнить для сохранения текущего layout-а с именем XXX перед откреплением сессии Screen, если в конфигурационном файле не прописано ни одной именованной разметки (например, вы только установили screen). Только в этом случае последняя разметка восстанавливается при повторном входе в сессию Screen из системной консоли. layout autosave on Команда автосохранения разметки обычно записывается в конфигурационном файле. Она запоминает тот именованный layout, который был на экране на момент "открепления" сессии Screen. Команда действует только на разметки, явно указанные в конфигурационном файле. В противном случае текущий layout нужно сохранить командой layout save XXX (см. выше). quit Закрыть все окна и завершить сессию

/* Here you can add custom CSS for the current table */ /* Lean more about CSS: https://en.wikipedia.org/wiki/Cascading_Style_Sheets */ /* To prevent the use of styles to other tables use "#supsystic-table-1" as a base selector for example: #supsystic-table-1 { ... } #supsystic-table-1 tbody { ... } #supsystic-table-1 tbody tr { ... } */

3. Пример файла конфигурации.screenrc

Глобальный файл конфигурации screen находится по адресу /etc/screenrc, но для удобства работы лучше написать пользовательский файл, который должен располагаться в домашнем каталоге пользователя ~/.screenrc. Обратите внимание, что в начале имени локального файла присутствует точка.

За основу я взял файл с Github (.screenrc by joaopizani) и подправил под свои нужды:


Таким образом, при запуске Screen мы получим экран в стиле Total Commander, который в любое время можно изменить, выбрав другую разметку. После возврата в сессию Screen из системной консоли разметка будет такой же, как на момент «открепления» благодаря функции автосохранения.

Вы залогинились на ваш удаленный сервер через ssh, радостно стучите по клавиатуре, делая свои какие-то админские дела и опа! Символы перестали печатться и вывалилось то самое сообщение, которое, порой, вызывает непреодолимое желание разбить клавиатуру. Connection closed. Знакомая ситуация? Да-да, ваша сессия только что аварийно оборвалась и все придется делать заново… Этого можно избежать, если использовать screen. Он не только позволит сохранить вашу сессию в целости и сохранности, но еще и позволит держать открытыми несколько сессий в одном окошке терминала

Что такое screen?
Сначала посмотрим man-страницу: “Screen - это полноэкранный оконный менеджер, который позволяет разделить физический терминал между несколькими независимыми процессами (обычно интерактивными облочками)”.
У screen есть несколько отличительных особенностей, которые могут сильно помочь при выполнении задач на удаленных серверах через ssh. Я расскажу о трех, самых часто используемых мной фичах: многооконность, логирование и сессии. За более подробными деталями придется обратиться к man-странице.

Установка screen
Скорее всего, screen уже есть в вашей системе. Проверить это можно командой

Если which не дал результатов, то установите screen при помощи пакетного менеджера вашей системы. На моих серверах, в основном, CentOS и Debian, поэтому я ставлю screen так:

# yum install screen (для CentOS)
# apt-get install screen (для Debian)

Попадается и FreeBSD, в этом случае я использую порты:

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

Использование screen
Screen запускается из командной строки также, как и любое приложение:)

Вы можете получить сообщение о том, что screen запущен, а можете и не получить… Зависит от вашей системы. Если вы не получили сообщения, то вы можете подумать, что ничего не произошло. Однако это не так. Вы уже внутри терминала, запущенного в screen. Это нормальный полнофункциональный шелл, за исключением нескольких специальных команд. Screen использует клавиатурную комбинацию Ctrl+A для подачи команд терминалам внутри себя. Попробуйте нажать Ctrl+A, а затем?
Вы увидите примерно следующее:

Screen key bindings, page 1 of 2.

Command key: ^A Literal ^A: a

break ^B b lockscreen ^X x reset Z
clear C log H screen ^C c
colon: login L select ” ‘
copy ^[ [ meta a silence _
detach ^D d monitor M split S
digraph ^V next ^@ ^N sp n suspend ^Z z
displays * number N time ^T t
fit F only Q title A
flow ^F f other ^A vbell ^G
focus ^I pow_break B version v
help ? pow_detach D width W
history { } prev ^P p ^? windows ^W w
info i readbuf < wrap ^R r
kill K redisplay ^L l writebuf >
lastmsg ^M m remove X xoff ^S s
license , removebuf = xon ^Q q

Screen воспринимает командные клавиатурные комбинации после нажатия Ctrl+A. Вы можете изменить это поведение при помощи конфиг-файла $HOME/.screenrc

Многооконность
Screen, как и большинство оконных менеджеров, поддерживает работу с несколькими окнами. Это очень удобно для выполнения параллельных задач без открытия новых ssh-сессий. Например, у меня постоянно открыто четыре или пять сессий с несколькими задачами в каждой. Раньше мне бы пришлось открыть порядка 15 терминалов, логинов, сессий.. Утомительно, не так ли? Эти неудобства полностью решает screen. Теперь я вполне могу обойтись одним терминалом.

Новое окно открывается комбинацией клавиш “Ctrl+a c”. После нажатия вы увидите новый терминал с вашим приглашением в том же окне. При этом предыдущие окна также продолжают работать. Давайте попробуем: запустите screen и в нем top

Mem: 506028K av, 500596K used, 5432K free,
0K shrd, 11752K buff
393660K cached


6538 root 25 0 1892 1892 596 R 49.1 0.3
6614 root 16 0 1544 1544 668 S 28.3 0.3
7198 admin 15 0 1108 1104 828 R 5.6 0.2

Теперь откройте новое окно, нажав “Ctrl+a c”

Вернитесь обратно, нажав Ctrl+a n

Mem: 506028K av, 500588K used, 5440K free,
0K shrd, 11960K buff
Swap: 1020116K av, 53320K used, 966796K free
392220K cached

PID USER PRI NI SIZE RSS SHARE STAT %CPU %ME
6538 root 25 0 1892 1892 596 R 48.3 0.3
6614 root 15 0 1544 1544 668 S 30.7 0.3

top остался в прежнем состоянии. Вы можете создать несколько окон и переключаться между ними используя Ctrl+a n для переключения на следующеее окно и Ctrl+a p для переключения на предыдущее. При этом каждый запущенный процесс останется в рабочем состоянии.

Отключаемся от screen
Есть два способа отключиться от screen: первый - это просто разлогиниться. Вы можете использовать клавиатурную комбинацию Ctrl+a K или просто набрать exit. Этот способ “убьет” текущее окно, если у вас их несколько или совсем остановит screen.
Второй способ заключается в отсоединении . Этот способ оставляет текущий процесс запущенным и просто отключает вас от терминала. Например, если вы через ssh-сессию запускаете какой-то очень длительный процесс, не требующий вашего внимания, то вы можете просто отключиться от screen при помощи Ctrl+a d. Это вернет вас обратно в исходную оболочку. Все процессы, запучшенные в screen, при этом остаются работающими и вы можете подключиться к ним позже.

Подключение к сессии
Вы компилируете большую программу на удаленном сервере, используя screen. И конечно же, по законам Мэрфи, соединение обрывается по независящим от вас причинам. Не стоит впадать в панику, screen все сохранил:) Просто соединитесь с сервером еще раз и посмотрите запущеные под screen процессы при помощи

# screen -ls
There are screens on:
31619.ttyp2.server (Detached)
4731.ttyp2.server (Detached)
2 Sockets in /tmp/screens/S-root.

В этом примере запущено две screen-сессии. Для подключения к нужной из них используйте команду

#screen -r 31619.ttyp2.server

Просто используйте screen с флагом r и именем сессии для повторного подключения. Это очень удобно. Можно, например, запустить какой-то длительный процесс на работе и, вернувшись домой, продолжить контроль за его выполнением.

Логирование
Мне кажется очень важным порой сохранять полный лог своих действий. К счастью, screen легко с этим справляется. Просто активируйте логирование нажатием Ctrl+a H. Screen будет продолжать логирование на протяжении всего процесса работы. Бывает очень полезно вернуться назад и посмотреть порядок необходимых действий.

И еще немного…
Screen может вести мониторинг активности окна. Если вы качаете что-то большое, компилируете программу или просто выполняете длительный процесс, вы можете долгое время наблюдать пустой терминал без признаков активности. А процесс, тем временем, продолжает выполняться. Или, наоборот, смотреть на поток отладочной информации, ожидая окончания процесса. Для начала слежения перейдите в терминал, который вы хотите наблюдать и нажмите Ctrl+a M для слежения за активностью (сработает при появлении новой информации) или Ctrl+a _ для слежения за бездействием (сработает при прекращении поступления информации в терминал). Затем вы можете спокойно переключиться в другое окно или создать новое. При наступлении события, screen предупредит вас об этом сообщением с номером окна в заголовке терминала. Для быстрого переключения в это окно используйте Ctrl+a ” (это символ кавычки). Вы увидите список всех активных окон на данный момент. Для перехода в нужное можно использовать стрелки или просто набрать номер нужного окна. Для прекращения наблюдения перейдите в нужное окно и отмените мониторинг той же командой. Например, для прекращения наблюдения за активностью нажмите Ctrl+a M

Больше года одноклассник подбивал меня начать использовать screen во время работы. Шло время, у меня всё никак не доходили до этого руки. А зря…

Screen — это полноэкранный оконный менеджер, позволяющий из одного терминального сеанса работать сразу с несколькими окнами. Иными словами, подключившись к удалённой машине по ssh вы сможите работать сразу с несколькими его окнами внутри одной сессии подобно нажатию ctrl+alt+f1, ctrl+alt+f2… У программы есть одна важная особенность: при обрыве связи или отключении от «скрина» процессы, в нём запущенные не останавливаются и к ним можно вернуться в любой момент. Этому можно найти массу применений. Например, работая с удалённым сервером можно быть уверенным в том, что запущенное компилирование программы дойдёт до конца, даже если вдруг оборвётся связь.

Установка

Устанавливается программа как обычно, например, в Ubuntu так:

apt-get install screen

Стоит так же заметить, что в моей Ubuntu 10.04 Desktop этот пакет уже был в системе.

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

Запуск программы:

После запуска программы будет показана краткая информация о ней. Для того, чтобы убрать её нажимаем enter или пробел. Вы можете подумать, что ничего не произошло, однако, это не так: вы внутри терминала, запущенного в screen. После этого мы видим привычную нам консоль.

Для подачи команд screen используется сочетание клавишь ctrl+a. Ниже приведён список основных команд, служащих для управления оболочкой:

  • c — создание нового окна
  • n — переключение к следующему окну
  • p — переключение к предыдущему окну
  • k — закрытие окна
  • d — отключение от скрина
  • » — список запущенных в скрине окон

Например, для создания нового окна нужно нажать ctrl+a и нажать клавишу c.

При отключении от скрина все окна и процессы, запущенные в них продолжают выполняться. Для просмотра запущенных скринов используется команда:

Вывод команды будет примерно таким:

There are screens on:
18388.pts-4.asid-ubuntu-vm (23.09.2010 05:05:30) (Detached)
18272.pts-0.asid-ubuntu-vm (23.09.2010 04:54:23) (Detached)
2 Sockets in /var/run/screen/S-root.

Для того, чтобы подключиться к запущенному скрину выполняем команду screen -r . Например, так:

screen -r 18388.pts-4.asid-ubuntu-vm

или короче:

Если вы забыли отключиться от скрина с другой машины (в выводе screen -ls рядом с ним будет надпись atached), перехватить его можно с помощью параметра -rd:

screen -rd 18388

Для подключения к последнему скрину можно просто:

Ну вот, вроде бы, и всё. Подробнее об этих и других командах, как обычно, в мане.

  • Создавать множественные окна в терминале SSH;
  • Сохранять сессию активной даже при сетевых отключениях;
  • Отключаться и переподключаться к сессии из разных мест;
  • Выполнять длительный процесс, не поддерживая активную сессию.

Установка Screen с Yum

Наверняка, у вас уже есть Linux Screen в вашей системе. В большинстве дистрибутивов Red Hat и CentOS вы можете найти Screen Linux в /usr/bin/ screen . Чтобы увидеть, находится ли там Screen , вы можете использовать следующую команду:

# which screen
/usr/bin/screen

Если у вас нет Screen, то можете установить его из RPM или файла пакета для вашей системы. Например, на CentOS можно установить Screen с yum:

# yum install screen
...
Complete!

Поскольку вы, скорее всего, уже имеете Screen или можете использовать RPM, я не буду описывать установку Screen из ресурса. А расскажу, как использовать screen.

Запуск Screen Linux

Screen запускается с командной строки точно так же, как любая другая команда:

root@office ~]# screen

Теперь вы в окне в Screen. Оно функционирует точно так же, как нормальная оболочка за исключением нескольких специальных символов.

Команда управления

Команда: "Ctrl-a"
Screen использует команду "Ctrl-a" , это - клавиша "CTRL" и нижний регистр "a" работает как сигнал отправить команды Screen’у вместо оболочки. Например, "Ctrl-a" потом "?". У Вас должна появится страница справки Screen.

Привязка клавиш - это команды, которые принимает Screen после того, как нажаты “Ctrl-a”. Вы можете переназначить эти ключи по своему усмотрению, используя.screenrc файл, но я использую значения по умолчанию.

Создание окон

Команда: "Ctrl-a" "c" . Чтобы создать новое окно используйте "Ctrl-a" "c".

Такая комбинация, с настройками по умолчанию создаст новое окно. Ваше старое окно будет все еще активно.
Например, я могу выполнить top и затем открыть новое окно, чтобы заняться чем-то другим. Top остается рабочей! Чтобы попробовать, запустите screen, а затем выполните top. (Примечание: некоторые скрины у меня урезаны, чтобы оставить свободное место.)

Запустите...

top - 09:10:33 up 35 days, 17:26, 1 user, load averag
Tasks: 131 total, 1 running, 130 sleeping, 0 stoppe
Cpu(s): 0.4%us, 0.2%sy, 0.0%ni, 99.4%id, 0.0%wa, 0
Mem: 12302040k total, 6363652k used, 5938388k free,
Swap: 1052248k total, 12k used, 1052236k free,

Теперь откройте новое окно с: "Ctrl-a" "c"

Ваше главное окно все еще запущено. При необходимости, вы можете переключиться на него.

Переключение между окнами

Команда: "Ctrl-a" "n"

Screen позволяет перемещаться вперед и назад. Вы можете использовать "Ctrl-a" "n", чтобы вернуться обратно. Эта команда переключает на следующее окно.

Работает как карусель - циклично выполнится назад по кругу к Вашему первому окну. Вы можете создать несколько окон и переключателя по ним "Ctrl-a" "n" для следующего окна или "Ctrl-a" "p" для предыдущего окна. Каждый процесс продолжит работать, пока вы не закроете окно.

Отсоединение от Screen

Команда: "Ctrl-a" "d"

Экран позволяет отсоединяться от окна и вернуться к нему позже. Если сетевая связь прервется, то Screen автоматически отсоединит сеанс!

Можете отсоединиться, используя "Ctrl-a" "d".

Все окна Screen все еще там, и вы можете повторно присоединиться к ним. Это удобно при использовании rsync для миграции сервера.

Повторное присоединение к Screen

Если Ваше соединение оборвалось или Вы отсоединились от Screen’а, Вы можете повторно подключиться, просто запуская:

$ screen -r

Произойдёт повторное подключение к Вашему Screen. Однако, если у Вас есть несколько Screen’ов,то может получится это:

$ screen -r
There are several suitable screens on:
31917.pts-5.office (Detached)
31844.pts-0.office (Detached)
Type "screen [-d] -r tty.host" to resume one of them.

Если так, просто определите Screen, который хотите.

$ screen -r 31844.pts-0.office

Регистрация действий Screen

Я считаю важным фиксировать то, что я делаю на чьем-либо сервере. К счастью, Screen это упрощает.
Используя "Ctrl-a" "H" , запускается регистрация сеанса. Screen продолжит добавлять данные к файлу через многократные сеансы. Использовать функцию регистрации очень полезно для отслеживания того, что вы делали, особенно если требуется вносить много изменений. Если что-то пойдёт не так, всегда будет возможность найти ошибку.

Получение уведомлений

Screen может контролировать окно, его активность или бездействие. Данная функция необходима, если загружаете большие файлы, делаете компиляцию или ожидаете вывода.

Если Вы ожидаете ответа от «долгой» программы, можете использовать "Ctrl-a" "M", чтобы отследить активность. Screen высветит предупреждение внизу страницы, когда отклик будет зарегистрирован на том экране.
Я использую это при выполнении команды, которая занимает много времени. Могу просто запустить команду, переключиться на другое окно и не возвращаться обратно каждый раз, чтобы проверить состояние.

Если загружаете большой файл или компилируете программу, по завершению придёт уведомление. Это - будет сигналом того, что задание выполнено. Чтобы контролировать такие моменты без вывода экрана я используют "Ctrl-A" "_" .

Блокировка сеанса Screen

Если Вам необходимо отойти от Вашего компьютера на несколько минут, Вы можете заблокировать свой сеанс, используя "Ctrl-a" "x" . Для доступа к сеансу снова потребуется пароль.

Screen used by root .
Password:

Остановка Screen

Когда вы закончили работу, я бы порекомендовал закончить сеанс вместо того, чтобы оставить его на потом. Чтобы остановить Screen, можете, как обычно, просто ввести «Exit» из своей оболочки. Это закроет Screen. Чтобы завершить сеанс вы должны закрыть все окна.

Как только вы закрываете все окна выводится сообщение о том, что Screen начал завершение.

Альтернативно, Вы можете использовать "Ctrl-a" "k" .

Есть такая замечательная утилита screen , о которой я раньше вообще не знал! Теперь же стараюсь постоянно использовать. И, надеюсь, после прочтения этой статьи, будете использовать её и вы.

Итак, для чего она нужна?

Уж сколько раз была ситуация, когда, работая в терминале по SSH получал дисконнект и все наработки (открытый конфиг или процесс копирования) терялись. Screen позволяет запускать в своём окружении сеансы пользователя и получать к ним доступ, имея как бы разные виртуальные консоли. Можно оставить открытым конфиг какого-либо сервиса, отключиться под конец рабочего дня, приехать домой и подключиться к этому же сеансу из дома и всё, что было в терминале будет вам доступно, включая историю, открытый редактор и т.д. Разрывы связи теперь не помеха. Можно иметь несколько разных сеансов и подключаться к ним произвольно!

Посмотрим, как это работает:

Утилита у меня была уже установлена, о чём радостно сообщила мне команда:

# dpkg info | grep screen

Ну вот и всё! Теперь можно начинать работу.

Работа с сессиями Screen

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

Посмотреть все сессии screen-а можно так:

Если сессии открыты, то подключиться к ним можно так:

# screen -x Имя

либо без имени, если сессия одна.

Создать сессию с определенным именем можно так:

# screen -S "name"

Кроме того, можно сразу запускать программы в Screen-сессию, набирая их:

# screen <команда>

Поработали мы со скрином, теперь можем либо убить сессию (выйдя из оболочки), либо отключиться от неё (Ctrl+D). При этом всё, что было в сессии продолжит выполняться и дальше.

Кроме того в одном окне screen можно использовать несколько консолей.

Убить сессию можно командой и затем k .

Управление Screen-ом

У screen-а весьма специфичное управление. Программе, запущенной внутри него передаются все нажатия клавиш, кроме тех, что предваряются сочетанием Ctrl+a (по умолчанию). Т.е. чтобы управлять screen-ом – нужно сперва нажать эту комбинацию, а затем набрать управляющую клавишу.

Итак, создаём новое окно внутри сессии screen:

# c

Можем переименовать это окно, для того, чтобы иметь возможность быстро его найти:

# A

Набрали текст, жмём Enter.

Просмотреть все окна можно так:

#

Выведет нам интерактивный список окон с номерами и именами, можно переключиться на любое.

Есть варианты выбрать не интерактивный список w , а так же переключаться на следующее n или на предыдущее окно p . Либо сразу на заранее известный номер окна 2 . Обратите внимание, что нумерация ведется с нуля.

Это может быть очень удобно вот для чего: допустим, нам нужно в реально времени мониторить какой-либо процесс. Предположим, нужно слушать log-файл постоянно. Для этого нам нужна команда

# tail -f /path/to/log

которая будет в реальном времени забирать 10 последних записей и выводить их на экран. Создадим новую консоль screen так:

# screen -d -m -S tail-log tail -f /var/log/nginx/error.log

– это создаст новую сессию screen-а, т.е. когда скрины пока не запущены вообще. При наборе этой команды, на первый взгляд, ничего не происходит. На самом деле так и есть. Создаётся (-m) новый сеанс по имени “ tail-log “, в котором выполняется команда “ tail -f /var/log/nginx/error.log ” (выводящая 10 последних записей лог-файла в реальном времени), и этот сеанс запускается уже свёрнутым (-d).

Если же скрин у вас уже запущен, то можно создать новое окно:

# c

Переименовать его в tail-log

# A

И запустить там нужную нам команду:

# tail -f /var/log/nginx/error.log

А в другом окне, аналогичным образом, открыть редактор правил файрволла и добавлять в DENY тех, кто нам явно нежелателен Ну или иное другое подобное применение, когда нужно быстро переключаться из окна в окно.

Мониторинг изменений окна

Но и это ещё не всё. Удобства ещё только начинаются. Есть ситуации, когда вывод какого-либо окна долго остается неизменным. Например ждать, пока в логи попадёт какая-либо информация может быть очень долго. И screen кое-что имеет на этот счёт!

Запустили мы два окна LOG в котором прослушивается лог-файл, и USER в котором наша консоль. Ждём пока в консоли. Реагировать будем тогда, когда в прослушиваемый LOG что-то придёт. Но не переключаться же постоянно туда-сюда, с целью уловить изменения?

Нажимаем сочетание:

# M

и включаем мониторинг активности окна. Теперь если текст окна изменится, то в списке окон возле его имени будет отображен символ “@”, а внизу окна на несколько секунд появится надпись “Активность в окне №…”!

Так же есть обратная возможность мониторить “тишину”, для этого используется команда: _ .

Два окна сразу

А можно ли открыть два консольных окна сразу? Конечно можно! Screen позволяет разделить окно. Вот как мы это сделаем.

Разделяем окно на части:

# S

При этом текущее окно пойдёт в верхнюю часть.

Переключение на нижестоящий регион (на первый, если уже на самом нижнем) осуществляется так:

# Tab

Открываем там другую консоль:

#

и выбираем её по имени. Имена окон подсвечиваются (0 LOG, 1 USER) чтобы мы не заплутали между ними.
2 окна сразу? Легко

Перемещая фокус ввода по Tab-у, как описано выше, мы, наконец, наигрались. Закрываем окна.

# X – закрывает текущий регион, Q закрывает все другие, кроме текущего. Смотря что вам нужно.

Копирование текста между окнами

Есть ещё одна интересная возможность – копирование текста между окнами через особый буфер.

Для этого есть команда

# [ , при этом можно перемещаться по окну курсорными клавишами, для определения начала текстового фрагмента жмём пробел. Двигая стрелочками курсор, отмечаем конец выделения и снова жмём пробел. Всё, фрагмент скопирован. Вставляется он в это же или другое окно нажатием ] . Всё просто!

Ведение лога и принт-скрин

Так же можно вести трассировку всего текста, выдаваемого в окно в особый файл screenlog. где N – номер окна.

# H

Теперь все результаты вашей работы будут логироваться и можно посмотреть историю не только ввода, но и вывода.

Так же команда для снятия текущего окна

# h

передает в файл hardcopy. только содержимое текущего окна, а не мониторит ввод-вывод постоянно. Аналог принт-скрина.

Конфигурирование

Для себя можно сконфигурировать Screen весьма гибко. После запуска выполняются команды в конфигах /etc/screenrc и персональные.screenrc в каталоге пользователя.

У каждой клавиатурной команды есть и текстовый вариант для конфига, который можно посмотреть в справке.

Но для примера вот такой конфиг, в котором отключаем приветствие, создаем заголовок и строку статуса, создаем два окна USER и LOG, в которых открываем соответствующие каталоги, делаем активным первое окно USER.
startup_message off
caption always "%{= 45}%{+b w}Screen: %n | %h %=%t %c"
hardstatus alwayslastline "%-Lw%{= BW}%50>%n%f* %t%{-}%+Lw%<"
chdir /root/
screen -t USER
chdir /var/log/nginx/
screen -t LOG
select 0

Теперь при простом запуске скрина у нас будет следующее:

Справка

Есть и другие возможности, которые можно посмотреть так.

В продолжение темы:
Linux

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

Новые статьи
/
Популярные