Настройка утилиты screen в Linux. Использование screen в Linux Как закрыть screen в putty
S creen очень полезная команда, которая предлагает возможность использовать несколько окон оболочки (сеансов) от одного . Когда сеанс отсоединен или есть нарушения сети, процесс, который запускается в сеансе экрана по-прежнему будет работать, и вы можете повторно подключиться к сессии экрана в любое время. Это также очень удобно, если вы хотите запустить длительный процесс постоянно или подключиться к оболочке сеансов из нескольких мест.
В этой статье мы покажем основы установки и использования экрана на .
Как установить экран
Экран поставляется с предустановленной на некоторых из популярных дистрибутивов. Вы можете проверить установлен он или нет на сервере с помощью следующей команды
Screen -v Screen version 4.00.03 (FAU)
Если у вас нет экрана к VPS, вы можете легко установить его с помощью менеджера пакетов, предоставляемой с операционной системой.
/RedHat/Fedora
yum -y install screen/
apt-get -y install screenКак начать сеанс экрана
Вы можете начать экран, набрав слово “screen” в командной строке и новый сеанс экран будет запущен, который выглядит так же, как в командной строке
Это хорошая практика, чтобы начать занятия экрана с описательными именами, так что вы можете легко вспомнить, какой процесс выполняется в сеансе. Чтобы создать новый сеанс с именем сеанса выполните следующую команду
Screen -S name
и заменить ‘name ‘ с понятным названием для вашей сессии.
Отсоединить экран от сессии
Для того, чтобы отключиться от текущего сеанса экрана вы можете нажать клавишу ‘Ctrl-A ‘ и ‘ D ‘ на клавиатуре. Все сеансы экрана будут по- прежнему активны, и вы можете повторно подсоединиться к ним в любое время позже.
Заново на экран сессии
Если вы оторваны от сеанса или ваше соединение прерывается по какой-то причине, вы можете легко повторно подсоединиться, выполнив следующую команду:
Screen -r
Если у вас есть несколько сеансов экрана вы можете перечислить их с ‘ ‘
Screen -ls There are screens on: 7880.session (Detached) 7934.session2 (Detached) 7907.session1 (Detached) 3 Sockets in /var/run/screen/S-root.
В нашем примере, у нас есть три активных сеансов экрана. Итак, если вы хотите восстановить сеанс “session2”, вы можете выполнить
Screen -r 7934
или вы можете использовать имя экрана
Screen -r -S session2
Завершить сеанс экрана
Есть несколько способов, чтобы завершить сеанс экрана. Вы можете сделать это, нажав ‘Ctrl ‘ + ‘ D ‘ на клавиатуре или с помощью команды командной строки ‘exit ‘.
Для того чтобы увидеть все полезные свойства экрана команды вы можете проверить man page screen.
Man screen NAME screen - screen manager with VT100/ANSI terminal emulation SYNOPSIS screen [ -options ] [ cmd [ args ] ] screen -r ] screen -r sessionowner/]
Больше года одноклассник подбивал меня начать использовать 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, радостно стучите по клавиатуре, делая свои какие-то админские дела и опа! Символы перестали печатться и вывалилось то самое сообщение, которое, порой, вызывает непреодолимое желание разбить клавиатуру. 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 использует клавиатурную комбинацию 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 cachedPID 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
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 | Перевести сессию в фоновый режим и вернуться в системную консоль |
Внутренние команды Screen. Доступны после ввода управляющего символа: (двоеточие).
mousetrack on | Включить поддержку мыши для переключения между областями. При этом блокируется возможность копирования / вставки по правому щелчку мыши в окне ssh-клиента Putty. Эта функция почему-то пропадает после "открепления" сессии Screen и возвращения в неё. | layout show | конфигурационном файле" data-order="Просмотреть список разметок экрана, заданных в конфигурационном файле">Просмотреть список разметок экрана, заданных в конфигурационном файле | layout select | Выбрать заданную в конфигурационном файле именованную разметку экрана либо по номеру (n) либо по названию (title). | layout save XXX | системной консоли." data-order="Эту команду нужно выполнить для сохранения текущего layout-а с именем XXX перед откреплением сессии Screen, если в конфигурационном файле не прописано ни одной именованной разметки (например, вы только установили screen). Только в этом случае последняя разметка восстанавливается при повторном входе в сессию Screen из системной консоли.">Эту команду нужно выполнить для сохранения текущего 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 из системной консоли разметка будет такой же, как на момент «открепления» благодаря функции автосохранения.
Эффективность администрирования систем GNU/Linux напрямую зависит от используемых утилит. Возможность выполнять максимум задач в минимальный срок - приоритетная цель этого процесса. Команда screen Linux является одним из основных инструментов системного администратора.
По умолчанию screen не является стандартной утилитой в большинстве дистрибутивов, но работает везде одинаково. Поэтому сначала рассмотрим её инсталляцию, а затем - возможности и основные команды.
Разница в инсталляции программы на разных дистрибутивах заключается в программах управления пакетами и их командами.
Чтобы установить screen в Ubuntu, Linux Mint, Deepin и других систем семейства Debian, используйте команду apt :
sudo apt install screen
В Manjaro, Antergos и других Arch-подобных ОС screen располагается в AUR, поэтому используйте соответствующую программу управления пакетами, например aurman :
aurman -S screen
Для инсталляции screen в системах на основе Red Hat (например Fedora и CentOS) используйте утилиту dnf :
dnf install screen
Основы работы команды screen
Принцип работы GNU/Linux в целом заключается в использовании небольших утилит, которые делают что-то одно, но хорошо. И эта программа - не исключение.
Команда screen Linux является консольной программой и имеет однозначное определение, соответствующее названию, - это оконный менеджер, разделяющий один физический терминал между несколькими процессами. Подходит для прямого либо удалённого администрирования.
Возможности программы
Screen позволяет переключаться между терминалами, в которых выполняются процессы, не прерывая их. Это особенно эффективно, когда необходимо производить сборку/установку ПО и мониторить дисковое пространство или использовать аппаратные ресурсы.
Screen может разделять текущий терминал на меньшее количество окон с возможностью запуска в них того же или других терминалов. Это ещё больше упрощает вышеописанную задачу, особенно при использовании больших мониторов.
Также к одной сессии screen может подключаться несколько пользователей. Это эффективно при обучении персонала.
Основные команды screen
Откройте терминал. Для запуска первого окна наберите:--
Создастся новая сессия программы и появится приветственное сообщение. Для его закрытия нужно нажать Space или Enter .
Все управляющие команды начинаются с комбинации клавиш Ctrl + a , затем следует буква или сочетание клавиш. Буквы разных регистров выполняют разные команды. Также сочетания можно заменять текстом. Для его ввода нажмите Ctrl + a и : , после чего вводите текст.
Например, чтобы создать новое окно, нажмите по очереди сочетание Ctrl + a и затем c . Для просмотра списка созданных окон нажмите Ctrl + a и w .
Для перехода в любое из созданных окон сессии используется комбинация Ctrl + a и номер , который за ним закреплён, или Ctrl + a и " , после чего нужно выбрать стрелками необходимое. Для последовательного перехода используйте Ctrl + a и n (следующее окно) или p (предыдущее окно).
Чтобы разделить экран по горизонтали, нажмите Ctrl + a и S . Например, для разделения окна по горизонтали напишите split .
Будет создано новое окно снизу от текущего, и оно не становится активным. Чтобы разделить по вертикали, нажмите Ctrl + a и | (или введите split -v ).
Были созданы новые пустые окна. Для переключения между ними используйте Ctrl + a и Tab (или напишите focus ). Положение курсора указывает, какое окно является активным в данный момент. Для скрытия окна используйте Ctrl + a и X (или введите remove).
Чтобы запустить в новом окне терминал, нажмите Ctr + a и c (или наберите screen).
Чтобы скрыть все окна и оставить только текущее, используйте Ctrl + a и Q (или напишите only ).
Переименовать окно можно с помощью Ctrl + a и A . Внизу появится строка с возможностью заменить старое название.
Чтобы скрыть все окна сессии, нажмите Ctrl + a и \ . Подтвердите решение нажатием y . Для выхода из менеджера окон нажмите Ctrl + a и d .
Команда screen обладает большим набором горячих клавиш. Полный их список можно посмотреть с помощью Ctrl + a и ? .
При создании новой сессии screen можно задать ей имя. Таким образом можно создать несколько сессий. Чтобы сделать это, используйте параметр -S , после которого укажите название.
screen -S name-of-screen
Посмотреть список запущенных сессий можно командой
Строка, идентифицирующая сессию, состоит из нескольких полей: id, название и статус.
Значение id отображается в списке всех запущенных процессов. Это означает, что его можно завершить с помощью команды kill . Завершить работу текущего окна можно с помощью комбинации Ctrl+a и k ; подтвердите решение нажатием y .
Статус может иметь два состояния: Attached (задействован) и Detached (незадействован). Второе состояние у сессий, в которых ещё не происходили никакие процессы.
Чтобы перейти в нужную сессию, следует указать параметру -r её id или название.
Это всё основные команды screen Linux.
Как пользоваться screen Linux
Теперь давайте рассмотрим, как пользоваться screen Linux более подробно.
Пример 1. Необходимо отслеживать изменения файла в реальном времени. Для этого в одном окне будем вносить изменения в новый файл, а в другом - отображать файл командой tail с опцией -f :
При стирании содержимого показывается сообщение, что файл усечён, при этом этот текст в него, конечно, не записывается.
Пример 2 . Необходимо отслеживать размер каталога в реальном времени. В одном окне записываем данные, в другом - отображаем, как изменяется размер домашнего каталога командой watch с задержкой в две секунды.