мета-данные страницы
Это старая версия документа!
screen
GNU screen - консольный мультиплексор терминала, эмулирующий терминал VT100/ANSI.
перейти к: Поиск / Инструменты пользователя / Главная страница / Изменить ширину рабочей области
radi0wiki
Это старая версия документа!
GNU screen - консольный мультиплексор терминала, эмулирующий терминал VT100/ANSI.
Screen это полноэкранный оконный менеджер, который мультиплексирует физический терминал
между несколькими процессами (обычно, интерактивными оболочками).
Каждый терминал обладает функциональностью терминала DEC VT100
и некоторыми управляющими функциями из стандартов ISO 6429 (ECMA 49, ANSI X3.64)
и ISO 2022 (вставка/удаление строки и поддержка множеств символов).
Для каждого виртуального терминала есть буфер истории и механизм обмена, позволяющий
копировать текст между окнами.
При вызове screen создаёт отдельное окно, в котором запускает оболочку командного интерпретатора
(или заданную программу), и вы можете работать с ней как и обычно.
Потом, в любое время, можно создавать новые (полноэкранные) окна,
в которых будут исполняться другие программы (в том числе различные оболочки),
закрывать существующие окна, просматривать список окон, включать/выключать запись,
просматривать буфер прокрутки, переключаться между окнами самыми разнообразными способами
и выполнять множество других действий.
Все окна работают полностью независимо друг от друга.
Программы продолжают работать, даже если они невидимы в настоящий момент,
или вообще весь сеанс screen полностью отключён от терминала пользователя.
Когда программа завершается, screen (по умолчанию) закрывает то окно,
в котором она исполнялась. Если это окно было активным, screen активирует предыдущее;
если окон не осталось, screen завершается.
Всё, что вы набираете внутри screen, отправляется программе, работающей
в текущем окне. Единственное исключение — комбинация клавиш, которая
показывает, что сейчас вы хотите работать с самим оконным менеджером.
По умолчанию, команды работы с оконным менеджером начинаются нажатием
Control-a (далее C-a), за которым следует нажатие одной клавиши. Эта
и другие управляющие комбинации могут быть настроены иначе, но они
обязательно должны состоять из двух символов.
Программа screen не понимает префикс «C-» как обозначение нажатия Ctrl.
Вместо этого нужно использовать запись с символом ^ (например, ^A вместо C-a).
Это может пригодиться, например, как аргумент опции -e. Кроме этого,
управляющие символы screen выводит в этом же формате.
Стандартный способ создать новое окно — нажать «C-a c».
Окно создаётся мгновенно, и screen сразу же делает его активным, независимо
от того, в каком состоянии находится процесс, выполняющийся в текущем окне.
Аналогично можно создавать новые окна, в которых будет выполняться какая-то своя команда.
Для этого сначала нужно привязать команду к комбинации клавиш (это делается через
конфигурационный файл <tt>.screenrc</tt> или через режим командной строки C-a :,
а потом, когда будет нужно, просто использовать эту комбинацию клавиш.
Кроме всего прочего, новые окна можно создавать при помощи команды:
screen emacs prog.c
которая вызывается в командном интерпретаторе, работающем внутри screen.
Новая копия screen создаваться не будет, а вместо этого команда будет передана
текущему менеджеру (информация о том кто именно является текущим менеджером
находится в переменной окружения <tt>$STY</tt>), который и создаст
новое окно.
В приведённом выше примере запускается редактор emacs (в котором открывается prog.c)
и окно с этим редактором становится активным.
Если файл <tt>/var/run/utmp</tt> доступен screen для изменения,
он сделает соответствующие записи для каждого окна при их создании,
и удалит при их закрытии. Это очень полезно при использовании
таких программ как talk, script, shutdown, rsend, sccs
и многими другими, которые используют файл <tt>utmp</tt>,
для того чтобы определить кто вы (то есть, какой пользователь работает с каким терминалом).
До тех пор пока screen активен на терминале, запись про собственно этот
терминал удаляется. Также смотрите C-a L.