Screen что это за программа

Содержание

Установка и использование Screen на облачном сервере Ubuntu

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

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

Установка

Данное руководство использует Ubuntu 12.04; на каждом современном дистрибутиве все команды, кроме установки, будут такими же.

Чтобы установить консоль на Ubuntu, используйте команду «apt-get»:

sudo apt-get update

Always on Display: что это такое в телефоне, и как включить AOD?


sudo apt-get install screen

Основы использования

Чтобы начать сессию screen, просто вызовите команду «screen»:

При запуске появится страница лицензирования. Для продолжения нажмите «Return» или «Enter».

Дальнейшие действия программы могут быть неожиданными. Предоставляется обычная командная строка и, кажется, ничего не происходит. Может, произошла ошибка работы screen? Чтобы узнать это, используйте быстрое сочетание клавиш. Нажмите и удерживайте клавишу управления (Ctrl), нажмите «а», затем клавишу «v»:

Ctrl-a v
screen 4.00.03jw4 (FAU) 2-May-06

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

Теперь нужно ознакомиться с управлением консолью. Screen управляется преимущественно с помощью клавишных комбинаций быстрого вызова. Каждой такой комбинации должна предшествовать «Ctrl-a» (зажмите клавишу «Ctrl» перед нажатием «а»). Такая последовательность нажатия клавиш говорит Screen обратить внимание на следующие нажатые клавиши.

Данный принцип уже использовался при запросе информации о Screen. Используйте его снова, чтоб получить еще немного полезной информации.

Это список внутренних горячих клавиш. Стоит запомнить команду его вызова, так как это отличный способ быстро получить справку. Как видно внизу файла, чтоб получить больше команд, нужно нажать пробел.

Теперь вызовите команду «top», которая предоставляет информацию о процессах.

top
top — 16:08:07 up 1:44, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 58 total, 1 running, 57 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 507620k total, 262920k used, 244700k free, 8720k buffers
Swap: 0k total, 0k used, 0k free, 224584k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 3384 1836 1288 S 0.0 0.4 0:00.70 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd

КАК ЗАПИСАТЬ ВИДЕО С ЭКРАНА ПК | БЕСПЛАТНО | IFUN SCREEN RECORDER


3 root 20 0 0 0 0 S 0.0 0.0 0:00.11 ksoftirqd/0
5 root 20 0 0 0 0 S 0.0 0.0 0:00.12 kworker/u:0
6 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
7 root RT 0 0 0 0 S 0.0 0.0 0:00.07 watchdog/0
8 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 cpuset
9 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 khelper
10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs
11 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns
12 root 20 0 0 0 0 S 0.0 0.0 0:00.03 sync_supers
13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 bdi-default
14 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kintegrityd
15 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kblockd
16 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 ata_sff
17 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khubd
18 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 md

Теперь можно просмотреть процессы на VPS. Но какие команды использовать, чтоб получить более подробную информацию о запущенных программах? Можно не выходить из команды «top», а просто создать новое окно для запуска этих команд.

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

Куда пропало это другое окно? К нему можно вернуться при помощи команды:

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

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

При постоянном переключении между двумя окнами полезно использовать следующее сочетание клавиш:

Данная последовательность переводит пользователя в наиболее часто посещаемое окно. В предыдущем примере она бы снова вывела третье окно.

Сейчас отслеживание всех созданных окон может показаться невозможным. К счастью, консоль Screen предоставляет несколько способов управления разными сессиями. Для начала создайте три новых окна (итого получится 4 окна), а затем используйте один из самых простых инструментов управления окнами – «Ctrl-a w».

Ctrl-a c
Ctrl-a c
Ctrl-a c
Ctrl-a w
0$ bash 1$ bash 2-$ bash 3*$ bash

Данная команда предоставляет полезную информацию – список открытых окон. В данном случае открыто 4 окна. Каждое окно имеет свой номер, начиная с 0. Звездочка рядом с номером указывает на текущее окно.

Как можно видеть, на данный момент окно №3 является текущим (по сути, оно четвертое, так как нумерация начинается с 0). Как быстро переключиться на окно №1?

Порядковый номер можно использовать для прямого перехода в необходимое окно. Снова откройте список окон:

Ctrl-a w
0$ bash 1*$ bash 2$ bash 3-$ bash

Как можно видеть, теперь текущим является окно №1. Попробуйте другой способ переключения между окнами.

Ctrl-a “
Num Name Flags
0 bash $
1 bash $
2 bash $
3 bash $

На этот раз выведено навигационное меню. Теперь можно перемещаться при помощи стрелок вверх и вниз или же клавиш «j» и «k», как это делается в текстовом редакторе vi. Переключиться на выбранное окно можно, нажав кнопку «Return» или «Enter».

Это достаточно полезно, но на данный момент все окна называются «bash». Это не очень удобно. Теперь нужно дать название сессии. Переключитесь на окно, которое нужно назвать, и используйте последовательность «Ctrl-a A».

Ctrl-a 0
Ctrl-a A
Set window’s title to: bash

При помощи данной последовательности можно дать сессии название. С помощью клавиши «backspace» сотрите «bash» и введите любое новое имя. Для примера назовите окно №0 «monitoring» и запустите в нем команду «top».

Set window’s title to: monitoring
Ctrl-a “
Num Name Flags
0 monitoring $
1 bash $
2 bash $
3 bash $

Окно №0 имеет более удобное имя.

Теперь можно создавать и переименовывать окна; но как избавиться от ненужного окна?

Используйте последовательность «Ctrl-a k», что значит «kill»:

Ctrl-a k
Really kill this window [y/n]

Управление сессиями Screen

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

Ctrl-a
Really quit and kill all your windows [y/n]

Это завершит сессию Screen. Все созданные окна, а также вся незавершенная работа будут потеряны.

Использование Screen имеет одно огромное преимущество. Сессию можно не удалять, а просто снять. Снятие сессии позволяет программам, запущенным в Screen, продолжать работу, а также дает доступ к сессии основной консоли (той, с которой начинается работа со Screen). Данная сессия Screen все еще существует, просто она управляется в фоновом режиме.

Ctrl-a d
[detached from 1835.pts-0.Blank]

Итак, сессия снята. Как вернуться в данную сессию?

Флаг «-r» значит «reattach», или «восстановить». Но что если существует несколько сессий Screen? Что если сессия Screen была создана и снята, а затем создана новая сессия, которая также была снята?

screen
Ctrl-a d
screen
Ctrl-a d

Как сказать Screen, какую сессию нужно восстановить?

screen –ls
There are screens on:
2171.pts-0.Blank (07/01/2013 05:00:39 PM) (Detached)
1835.pts-0.Blank (07/01/2013 03:50:43 PM) (Detached)
2 Sockets in /var/run/screen/S-justin.

Теперь выведен список сессий. Чтобы восстановить вторую сессию, введите ее идентификационный номер после флага «-r».

Что если нужно восстановить сессию на двух удаленных компьютерах или терминальных окнах? Используйте флаг «-x», что позволяет разделить сессию.

Управление терминалами в Screen

Существует ряд команд, позволяющий управлять сессиями терминалов, запущенных в Screen.

Чтобы скопировать текст, используйте последовательность:

Эта последовательность предоставляет курсор, который можно передвигать при помощи клавиш со стрелками или же клавиш «h», «j», «k», «l» (как в vi). Переведите курсор в начало фрагмента текста, который нужно скопировать, и нажмите «Return» или «Enter». Затем переведите курсор в конец фрагмента и снова нажмите «Return» или «Enter». Текст будет скопирован в буфер обмена.

Следует запомнить, что это также механизм прокрутки данной консоли. При необходимости просмотреть текст, находящийся вне экрана, введите «Ctrl-a [» и используйте прокрутку вверх.

Можно вставить скопированный текст с помощью закрывающей квадратной скобки

Также может понадобиться просмотреть программы, запущенные в другом screen-окне.

К примеру, какие-либо данные компилируются в одном окне и необходимо узнать, когда процедура завершена. Можно сказать Screen отслеживать бездействие этого окна при помощи последовательности «Ctrl-a _», которая сообщит, если данные перестанут выводиться в течение 30 секунд.

Приведем более простой пример. Скажите консоли Screen сообщить, когда окно завершит пинг Google 4 раза.

ping –c 4 www.google.com
Ctrl-a _
The window is now being monitored for 30 sec. silence.

Теперь можно работать в другом окне и ждать извещения о завершении задачи в предыдущем окне.

Ctrl-a 1
Window 2: silence for 30 seconds

Можно также, наоборот, запрашивать извещение об активности определенного окна. Это делается при помощи последовательности «Ctrl-a M».

sleep 20 echo “output”
Ctrl-a M
Window 2 (bash) is now being monitored for all activity.

Теперь появится извещение при выводе данных в этом окне.

Ctrl-a 1
Activity in window 2

К примеру, необходимо внести ряд важных изменений, и при этом нужно получить журнал запущенных команд. Сессию можно записать при помощи:

Ctrl-a H
Creating logfile «screenlog.1».

Области Screen

При необходимости видеть несколько окон сразу, можно использовать так называемые «области». Новые области создаются при разделении текущей области. Чтобы разделить текущую область по горизонтали, можно ввести:

Это передвинет текущее окно в верхнюю часть экрана и откроет новую пустую область под ним. Чтобы перейти в нижнюю область, используйте «tab»:

Читайте также:
Слк что это за программа

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

При необходимости уничтожить текущую область используйте следующую последовательность:

Это удаляет область, при этом не уничтожая текущее окно. То есть, если в данной области была запущена команда, то получить доступ к ней как к обычному окну все еще можно, просто отдельная область уничтожена.

При необходимости сделать вертикальный раздел, можно использовать последовательность:

Примечание: это не символ 1 (единицы) или L. Это символ вертикальной черты, который на большинстве клавиатур находится на одной клавише с символом «». Средства управления вертикальными областями совпадают с управлением горизонтальными. При необходимости удалить несколько различных областей и вернуться к одной области, можно использовать данную последовательность, которая разрушает все области, кроме текущей:

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

Значительным улучшением для Screen является программа под названием «byobu». Она действует как оболочка Screen и предоставляет повышенное удобство пользования. В Ubuntu ее можно установить с помощью:

sudo apt-get install byobu

Прежде чем начать, нужно сказать byobu использовать screen как выходной буфер. Это можно сделать с помощью команды:

byobu-select-backend
Select the byobu backend:
1. tmux
2. screen
Choose 1-2 [1]:

Здесь можно установить screen как менеджер терминала по умолчанию.

Теперь можно ввести «byobu» вместо «screen», чтобы начать сессию.

Как можно видеть, теперь screen заключен в удобный интерфейс.

Впервые набрав «Ctrl-a», нужно сказать byobu распознавать эту команду как команду screen, а не Emacs.

Ctrl-a
Configure Byobu’s ctrl-a behavior.
When you press ctrl-a in Byobu, do you want it to operate in:
(1) Screen mode (GNU Screen’s default escape sequence)
(2) Emacs mode (go to beginning of line)
Note that:
— F12 also operates as an escape in Byobu
— You can press F9 and choose your escape character
— You can run ‘byobu-ctrl-a’ at any time to change your selection
Select [1 or 2]:

Выберите 1, чтобы использовать byobu в обычном режиме.

Интерфейс предоставляет много полезной информации, как, например, список окон и информацию о системе. В Ubuntu он даже сообщает, сколько пакетов имеет обновления безопасности в виде номера с последующим восклицательным знаком на красном фоне.

Единственное отличие между byobu и screen в том, что byobu управляет сессиями. Если после отключения просто снова набрать «byobu», она восстановит предыдущую сессию вместо того, чтобы создавать новую.

Чтобы создать новую сессию, нужно набрать:

byobu –S sessionname

Измените «sessionname» (имя сессии) по своему усмотрению, чтобы вызвать новую сессию. Список текущих сессий можно просмотреть с помощью:

byobu –ls
There are screens on:
22961.new (07/01/2013 06:42:52 PM) (Detached)
22281.byobu (07/01/2013 06:37:18 PM) (Detached)
2 Sockets in /var/run/screen/S-root.

Если существует несколько сессий, то после ввода «byobu» появится меню, в котором можно выбрать, к какой из сессий нужно подключиться.

byobu
Byobu sessions.
1. screen: 22961.new (07/01/2013 06:42:52 PM) (Detached)
2. screen: 22281.byobu (07/01/2013 06:37:18 PM) (Detached)
3. Create a new Byobu session (screen)
4. Run a shell without Byobu (/bin/bash)
Choose 1-4 [1]:

Можно выбрать любую из существующих сессий, создать новую сессию byobu, или даже новую оболочку, не использующую byobu.

Одна из очень полезных для удаленного облачного сервера функций – возможность запускать byobu автоматически при каждом подключении к сессии. Это значит, что при отключении сессии работа не будет потеряна, и можно будет без труда подключиться к данной сессии снова.

Чтобы активировать автоматический запуск byobu при каждом входе, введите в терминал:

byobu-enable
The Byobu window manager will be launched automatically at each text login.
To disable this behavior later, just run:
byobu-disable
Press to continue.

Как указано выше, чтобы отключить данную функцию, просто введите:

Тогда она не будет запускаться автоматически.

Источник: www.8host.com

Screen — текстовый оконный менеджер

Людям, которые в Линуксе часто работают с консолью приходилось сталкиваться с проблемой необходимости нескольких терминалов, например в одном из них пользователь правит текстовый файл, а в другом идет компиляция программы. Существует много способов решения данной проблемы, например открыть несколько псевдо-терминалов или открыть несколько вкладок. В данной статье я хотел бы рассмотреть способ, не связанный с каким-то конкретным терминалом: использовать консольный оконный менеджер Screen.

Итак, что же представляет из себя Screen?

Screen

Screen — это оконный менеджер с эмуляцией терминала VT100/ANSI. Другими словами, это консоль в консоли, т.е. запуская одну терминальную сессию мы можем запустить параллельно несколько команд и наблюдать за их работой. Конечно многие могут сказать, мол зачем нужен какой-то там консольный оконный менеджер, когда уже есть gnome-terminal, konsole и прочие графические эмуляторы терминала, поддерживающие вкладки?

Рассмотрим ситуацию, когда Screen реально необходим. Предположим, что на Вас возложена обязанность удаленно управлять Linux сервером. Тогда, как и всякий другой админ, вы подключаетесь к серверу через SSH и выполняете различные команды. Если вам нужно еще одно окно, то вы создаете еще одно SSH подключение. И все идет хорошо до тех пор, пока сеть нормально функционирует, но однажды может случиться что-то непредвиденное и сеть упадет, причем и ваш локальный компьютер и удаленный сервер будут нормально функционировать, но все удаленные сессию будут потеряны, запущенный программы — убиты, несохраненные скрипты придется писать заново (особенно непрятно когда идет достаточно долгий процесс, который обваливается на самом последнем этапе и все приходится начинать сначала).

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

Еще одной интересной особенностью Screen-а о которой я недавно узнал, является запись всего вывода консоли в текстовый файл, обычно bash ведет запись списка команд (history), а screen может записывать и вывод который был получен в результате выполнения этих команд. Для того чтобы включить запись нужно нажать в запущенном screen-е Ctrl-a H, а для завершения записи достаточно повторно нажать данное сочетание клавиш. Screen запишет все в файл screenlog.n, где n — целое число соответствующее номеру окна Screen. Обычно я проигрываю полученную «демку» таким набором команд (предположим, что запись происходила с окна под номером 1):

time=0.1
rows=`wc -l screenlog.1 | awk »`
for i in `seq 1 $rows`; do head -$i screenlog.1 | tail -1; sleep $time; done;
reset

Здесь time — время задержки (чем больше это время, тем медленнее будет происходить вывод «демки»)

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

Ctrl-a c — создать новое окно Screen
Ctrl-a n — переместиться в следующее окно
Ctrl-a p — переместиться в предыдущее окно
Ctrl-a d — отключиться от текущей сессии screen, при этом все команды продолжат свое выполнение
Ctrl-a K — «убить» выбранное окно (нужно если программа в окне зависла и не хочет умирать самостоятельно)
Ctrl-a » — вывести список всех окон
Ctrl-a A — изменить название текущего окна (удобно, чтобы различать окна между собой, например поставить названия «localhost», «ssh 1.2.3.4» и т.п.

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

Рассмотрим еще одну интересную особенность Screen, а именно назначением «биндингов» на различные сочетания клавиш. Для начала, скажу, что мне казалась нудобной привязка клавиш Ctrl-a как некого префикса, намного лучше будет сделать этим префиксом сочетание клавиш Ctrl-. Для этого в конфигурационном файле .screenrc необходимо добавить следующую строку:

escape 3434

Еще мне казалось неудобным каждый раз набирать Ctrl-a n и Ctrl-a p для перемещения по окнам, лучше если это действие будет назначено на функциональные клавиши F1 и F2 соответственно. Для этого в конфиг файл добавляем:

bindkey -k k1 prev
bindkey -k k2 next

Еще было бы интересно назначить на определенные клавиши запуск определенной программы в новом окне. Рассмотрим, как пример запуск Vim-а в окне №5 по комбинации клавиш Ctrl-a e. Для этого нужно добавить в конфиг следующее:

bind e screen -t ‘Vim’ 5 vim

Еще одной особенностью Screen-а является возможность мониторинга отдельных окон на активность или неактивность. Такая функциональность удобна когда идет длительный процесс компиляции в одном окне а пользователь занимается чем-то в другом и хочет узнать когда компиляция закончится (мониторинг на неактивность) или же когда в одном окне идет наблюдение за выполнением программы (например find) и пользователь хочет узнать когда программа выдаст какие-нибудь строки на терминал (наблюдение за активностью). Для включения этого функционала необходимо нажать следующую комбинацию клавиш:

Ctrl-a M (для слежения за активность)
Ctrl-a _ (для сдежения за неактивность)

На этом я хочу закончить свою статью. Я описал далеко не все возможности программы Screen, но и описанный функционал достаточен для полноценной работы. И в заключении хочу сказать, что Screen — это очень функциональная находка для всех пользователей Linux, работающих с консолью.

P.s. Это моя первая статья на Хабре, так что прошу сильно не пинать ее в коментах, но здоровая критика всегда приветствуется. Спасибо за внимание.

Источник: habr.com

Записки IT специалиста

Linux — начинающим. Screen — многозадачность в терминале и ни единого разрыва!

Любой начинающий Linux-администратор начинает знакомство системы с интерфейса командной строки и эмулятора терминала. В качестве последнего могут использоваться самые различные приложения, но достаточно быстро приходит понимание, что никакие возможности терминала не могут заменить возможностей самой системы. Одной из утилит, помогающей управлять терминалами Linux является screen, это достаточно простая, но в тоже время функциональная утилита, владение которой входит в разряд обязательных знаний и умений любого специалиста.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Прежде всего вспомним, что такое терминал, более подробно этот вопрос мы обсуждали в нашей статье: Linux — начинающим. Часть 7. Потоки, перенаправление потоков, конвейер. Терминал — это оконечное устройство, при помощи которого осуществляется взаимодействие пользователя с компьютером, в современных системах это специальное приложение — эмулятор терминала. К одному компьютеру может быть присоединено сколько угодно терминалов, взаимодействие с терминалом осуществляется через консоль — инструменты ввода-вывода (клавиатура и монитор), к одной консоли также можно подключить несколько терминалов.

После того, как мы подключились через эмулятор терминала к компьютеру, не важно, локальному или удаленному, в нем запускается специальная программа — командный интерпретатор, который обеспечивает базовое взаимодействие пользователя и ОС, в современных Linux чаще всего это bash. Все последующая работа производится в рамках сессии командного интерпретатора запущенного в эмуляторе терминала.

Читайте также:
ОАЭ что это за программа

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

И чем нам здесь поможет screen? Для этого в первую очередь следует разобраться с терминологией, потому что очень много материалов содержат самые разные варианты терминов, что только запутывает ситуацию. При запуске screen создает отдельный процесс в системе, который создает отдельный консольный сеанс и запускает в нем эмулятор терминала. В различных инструкциях можно встретить наименования скрин, экран, но наиболее правильно называть его именно сеансом. Терминал запущенный в сеансе screen обычно принято называть окном, мы можем создавать неограниченное количество окон в одном сеансе и переключаться между ними, точно также как можем создать несколько tty-терминалов в обычной консольной сессии.

Сеанс screen существует до тех пор, пока в нем существует хотя бы одно окно (терминал), как только мы закроем последнее окно — сеанс screen также будет закрыт.

Для установки screen воспользуйтесь командой:

apt install screen

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

Чтобы создать новый сеанс screen просто можете запустить:

screen

Перед вами откроется подобное окно, чтобы закрыть его используйте Пробел или Enter.

linux-screen-001.png

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

Если нам нужно новое окно, то нажмите Ctrl + a c , у вас снова появится чистое окно терминала, готовое к работе. Чтобы просмотреть количество запущенных окон нажмите Ctrl + a w и внизу экрана вы увидите их список, около активного окна будет стоять звездочка.

linux-screen-002.png

Переключаться между окнами можно сочетанием клавиш Ctrl + a N , где N — номер нужного окна. Для закрытия ненужного окна используйте Ctrl + a k . Помните, что закрытие последнего окна приведет к завершению сеанса screen.

Сеансы screen могут находиться в двух состояниях — активном (Аttached), когда он запущен в открытом терминале и неактивном (Deattached), когда сеанс продолжает работу в свернутом виде и активных соединений с ним нет. Если сеанс screen активен в одно терминале, то подключиться к нему с другого вы не сможете.

Для того чтобы выйти из сеанса screen и перевести его в неактивный режим применяется сочетание клавиш Ctrl + a d .

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

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

screen -S i31_htop

запустит сессию screen с именем i31_htop.

Также мы можем сразу запустить сеанс в свернутом виде:

screen -dmS i31_MyScript ~/my_script.sh

Ключ d указывает на то, что сеанс должен быть свернут, ключ m — что его нужно создать, ключ S задает понятное имя i31_MyScript, далее передается команда, которую надо выполнить.

Здесь возникает еще один интересный вопрос: а что лучше создавать, новые окна в одном сеансе screen для разных задач или отдельные сеансы? Однозначного ответа здесь быть не может, все зависит от того, как вам удобнее работать. Но помните, что если кто-то подключился к сеансу screen и он перешел в статус активен, то вы не сможете подключиться к нему другим пользователем или с другого рабочего места.

Поэтому разные задачи все-таки лучше размещать в отдельных сеансах, а все связанные — в отдельных окнах одного сеанса.

Допустим мы закончили работу в офисе и ушли домой, после того как мы снова подключились к нужному узлу выполним:

screen -ls

Это покажет все существующие сеансы screen и их статус.

linux-screen-003.png

Для восстановления сеанса нужно указать его PID или имя, например:

screen -r 11411
screen -r i31_htop

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

После выполнения данных команд у вас будет восстановлен сеанс screen c активным на момент деактивации окном. Можем продолжать работать.

Но на этом возможности screen не исчерпываются, хотите сразу выполнять команды и наблюдать результат их действий? Нет ничего проще, screen позволяет разделить экран на несколько областей и в каждой из них отобразить свое окно. Для того, чтобы разделить текущее окно по вертикали введите Ctrl + a S , обратите внимание на регистр, это важно. Чтобы разделить окно по горизонтали используйте другое сочетание Ctrl + a | .

Но эти комбинации только делят на части экранное пространство на несколько зон, переключаться между ними можно при помощи Ctrl + a Tab . Перейдя в нужную зону мы можем открыть там новое окно комбинацией Ctrl + a c или показать уже существующее при помощи Ctrl + a N с указанием номера нужного окна, при этом внизу области экрана будут указаны ее номер и имя.

linux-screen-004.png

По умолчанию все окна имеют имя bash, это неудобно, так как не позволяет сразу понять для чего используется то или иное окно. Переименовать активное окно можно комбинацией клавиш Ctrl + a A , здесь снова важен регистр. Далее просто вводим желаемое имя, обратите внимание как выглядит нижняя область, окно которой мы ранее переименовали.

linux-screen-005.png

А что будет, если мы в окне screen восстановим другой сеанс screen? Мы увидим только активное на момент деактивации окно, без возможности переключаться между окнами, также даже при деактивации текущего сеанса screen открытый в нем сеанс останется активным, это тоже нужно учитывать.

Чтобы закрыть область экрана используйте Ctrl + a X , и снова обращаем внимание на регистр, чтобы закрыть все области, кроме активной, введите Ctrl + a Q .

Мы не будем здесь пересказывать полное руководство по команде screen, если вы что-то забыли, всегда можно вызвать быструю справку по командному режиму сочетанием клавиш Ctrl + a ?

linux-screen-006.png

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

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

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Поддержи проект!

Подпишись на наш Telegram-канал

Или подпишись на наш Телеграм-канал:

Источник: interface31.ru

Как пользоваться screen для управления терминалами Linux и отсоединения процессов от терминала

Screen — это программа для «уплотнения» (мультиплекса) физических консолей. Суть в том, что несколько процессов (как правило интерактивных шеллов) могут работать в одном окне консоли. То есть эта программа позволяет пользователю иметь несколько экземпляров терминалов внутри одного терминала этого менеджера окон. Речь идёт не о вкладках, а о перемещении терминалов в фон. Одним из эффектов работы screen является то, что при закрытии окна терминала, процесс продолжает работу.

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

Как установить screen

На некоторых системах пакет screen может быть уже установлен. Если у вас его нет, то установите его.

На Debian, Linux Mint, Ubuntu, Kali Linux и их производных:

sudo apt install screen

На RedHat и производных:

yum install screen

На Arch Linux, BlackArch и их производных:

sudo pacman -S screen

Чтобы установить screen на Solaris:

pkgadd -d http://get.opencsw.org/now /opt/csw/bin/pkgutil -U /opt/csw/bin/pkgutil -y -i screen /usr/sbin/pkgchk -L CSWscreen # list files screen -v

На самом деле, screen это очень полезная команда в Linux которая может пригодиться при различных обстоятельствах. Давайте начнём знакомство с функциями screen.

Запуск screen в первый раз

Просто наберите screen в приглашении командной строки:

screen

Будет выведена информация о программе — нажмите ENTER, чтобы её скрыть. Затем приглашение командной строки вернётся в точно такое же, как было и ранее.

Справка по параметрам screen

Когда вы вошли в screen, вы можете делать вашу обычную работу как будто бы вы в обычном окружении командной строки. Программа screen расширяет функциольность за счёт своих команд (параметров).

Нажмите Ctrl-A, а затем ? (то есть Shift+/). Затем вы увидите все команды (параметры) screen.

Чтобы выйти из экрана справки, нажмите Пробел или Enter.

Отсоединение процесса от консоли в screen

Одним из преимуществ screen является возможность отсоединить от консоли процесс, который запущен внутри screen. Далее вы можете даже закрыть консоль (или отключиться от SSH) — процесс всё равно продолжит свою работу. Затем вы можете восстановить окно консоли — вы увидите, что программа всё это время работала и её данные не потеряны.

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

Если я отключусь от SSH или связь будет потеряна случайно, то тогда процесс выполнения команды в консоли будет остановлен и нужно будет вновь начинать сначала. Чтобы этого избежать, мы можем использовать screen для отсоединения процесса от консоли.

Рассмотрим на примере конкретных команд.

Вначале входим в screen:

screen

Затем я запускаю пинг:

ping ya.ru

В процессе работы программы, мы можем нажать Ctrl-a и d. Вывод от программы прекратиться, мы увидим примерно следующую информацию:

[detached from 13677.pts-2.HackWare]

Повторное подсоединение консоли с запущенным процессом к screen

После отсоединения процесса и закрытия screens, вы можете отключиться от сервера, то есть закрыть SSH сессию и заняться другими делами. Затем вы можете подключиться к SSH снова — причём, возможно даже с другого компьютера. После этого вы можете увидеть прогресс выполнения вашего процесса (пинг, загрузка, что угодно). Чтобы это сделать, нужно восстановить screen. Для этого запустите следующую команду:

Читайте также:
Программа патерсон что это

screen -r

И вы увидите, что процесс, который вы здесь оставили, всё ещё запущен.

Когда у вас больше чем одна сессия screen, то вам нужно будет ввести ID (идентификатор) сессии screen. Используйте screen -ls чтобы показать, как много сессий доступно:

There are screens on: 13786.pts-2.HackWare (Detached) 13677.pts-2.HackWare (Detached) 2 Sockets in /run/screens/S-mial.

Если вы хотите восстановить сессию screen 13786.pts-2.HackWare, тогда наберите следующую команду:

screen -r 13786

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

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

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

Во-вторых, вы можете делать вложенные экраны screen.

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

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

Для создания нового окна screen нажмите Ctrl-a и c.

Как записать все действий в терминале

Иногда важно сохранить все действия в терминале, которые вы выполнили находясь в консоли, то есть вести журнал (логи) активности в консоли.

Допустим вы администратор Linux, который управляет множеством серверов Linux. С ведением журнала в screen, вам не нужно выписывать каждую команду, которую вы ввели. Для активации функции ведения журнала screen просто нажмите Ctrl-a и H. Пожалуйста, будьте осторожны — используется заглавная H (то есть Shift+h). Использование прописной ‘h’ только создаст скриншот экрана screen в файле с именем hardcopy.

В нижней левой части экрана будет уведомление, которое говорит что-то вроде Creating logfile «screenlog.0» (производится ведение журнала экрана). В своей домашней директории вы найдёте файл screenlog.0.

Эта функция будет добавлять в файл всё, что вы делаете в окне screen. Для закрытия активности по ведению журнала screen, вновь нажмите Ctrl-a и H.

Другой способ активировать функцию ведения журнала: вы можете добавить параметр -L во время запуска screen. Команда будет выглядеть примерно так:

screen -L

Блокировка screen

Screen также имеет комбинацию клавиш для блокировки окна screen. Вы можете нажать Ctrl-a и x для блокировки screen. Это полезно, если вы хотите быстро заблокировать ваш screen. Пример вывода после блокировки:

Screen used by on HackWare. Password:

Вы можете использовать ваш пароль в Linux чтобы разблокировать его.

Добавление пароля на заблокированный screen

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

Чтобы защитить паролем screen, вы можете отредактировать файл «$HOME/.screenrc». Если файл не существует, создайте его. Синтаксис будет примерно таким:

password ВАШ_ПАРОЛЬ

ВАШ_ПАРОЛЬ нужно указать в виде хеша, а не в виде обычного текста. Если там указано none, то пароль не будет спрашиваться. Если не указать пароль, то screen покажет приглашение для ввода пароля и его подтверждения и поместит хеш в буфер обмена.

Чтобы сгенерировать хеш, нужно выполнить следующую последовательность действий:

  • запустить сессию screen:

screen
:password

  • появится приглашение ввести пароль и его подтвердить.
  • затем нажать Ctrl+a и ] — пароль будет скопирован на экран.

После того, как вы установите пароль password и нажмёте Ctrl-a и x, то у вас программа будет спрашивать пароль два раза: первым будет пароль пользователя, а затем пароль от screen . При подсоединении задач пароль будет спрашиваться только от screen.

Как выйти из Screen

Есть два способа покинуть screen. Первый это использовать Ctrl-a и d для отсоединения экрана. Второй — мы можем использовать команду exit для закрытия сессии screen. Вы также можете использовать Ctrl-a и K для остановки screen.

Как запустить скрипт, процесс которого отделён от терминала

С помощью screen также возможно запуск файла скрипта, который изначально будет отделён от терминала, например:

screen -d -m script.sh

Это запустит отделённый (независящий) от терминала процесс. Можно отделить любую команду или процесс с помощью программы screen.

Как просмотреть предыдущие результаты (вывод)

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

Вы можете нажать Ctrl-a и Esc для входа в Copy mode (режим копирования). Когда вы окажитесь в режиме копирвоания, вы можете использовать для пролистывания экранов кнопки PageUp и PageDown.

Для выхода из Copy Mode, нажмите ещё раз Esc.

Как разделить экран на несколько вкладок в screen

В screen вы можете разделить окно на несколько виртуальных терминалов, которые будут одновременно присутствовать на экране. Для этого нажмите Ctrl-a и S.

Именные окна screen

Вы можете использовать несколько именных окон screen. Для этого запустите сессию screen с опцией -S, после которой укажите желаемое имя, например:

screen -S testing

эта команда создаст screen с именем testing.

screen -ls

покажет текущие сессии screen с их именами:

There is a screen on: 2063.testing (Attached) 1 Socket in /var/run/screen/S-root.

Чтобы подключиться к именной сессии screen используйте опцию -x с именем сессии:

screen -x testing

в результате предыдущей команды, вы подключитесь к testing screen.

Альтернатива для screen

Если вы ищите альтернативу для screen, то присмотритесь к tmux.

Это азы использования screen которые вам пригодятся практически при каждом её использовании. У программы ещё множество функций, с которыми вы можете ознакомится в её справке или на странице man.

Связанные статьи:

  • 5 способов сделать так, чтобы программа не останавливалась после отключения SSH (100%)
  • Как закрыть терминал без убийства запущенной в нём команды (69.6%)
  • Как пользоваться tmux для создания нескольких терминалов внутри одной консоли (69.6%)
  • Terminator: эмулятор терминала для управления несколькими окнами терминала на Linux (54.4%)
  • Различия между Login shell и Non login shell (оболочка с входом и оболочка без входа) (54.4%)
  • Лучшие дистрибутивы Linux на основе RedHat (RANDOM — 50%)

Источник: zalinux.ru

День добрый! Меня зовут Евгений. Я IT специалист и web — разработчик.

Яловой Евгений
Россия, Краснодар

  • ГЛАВНАЯ
  • Блог

Утилита Screen в Linux, как работать.

Компьютерная помощь, разработка сайтов и не только.

Утилита Screen в Linux, как работать.

Evgeniy / 13 ноября 2019 / Опубликовано в Блог

Утилита Screen в Linux, как работать.

При работе c VPS или VDS по SSH удобно открывать сеансы в скрине (screen).

Screen – это что-то вроде окна, которое можно свернуть-развернуть, если проводить аналогию с графическим интрефейсом. Только вместо окна вы получаете виртуальную консоль, которую можно отправить в фон или вывести на передний план, и в которой запускается указанное приложение.

Запуск производится простой командой – screen.

При запуске в таком виде, т.е. без параметров, программа создаст новый скрин, в котором откроет сессию командной оболочки, как если бы вы залогинились в tty-консоли или открыли новую вкладку в графическом терминале, для наглядности выполните что-нибудь в командной строке — например, ls.

Теперь о том, как свернуть запущенный скрин вместе со всем, что в нем работает. Для этого нужно нажать Ctrl+A , после чего нажать D. в принципе, это единственная комбинация, которую простому пользователю стоит запомнить. Сtrl+A переведет screen в командный режим. клавиша D даст команду свернуть текущий скрин. Теперь вы можете закрыть терминал или разлогиниться с tty-консоли — запущенный в свернутом скрине процесс продолжит работу в фоне.

Для того, чтобы вернуться к свернутому скрину, достаточно запустить:

Ключ -r как раз и укажет программе, что нужно развернуть свернутый скрин (если таковой, конечно, имеется). Перед вами должна предстать та самая сессия в консоли, которую вы свернули, со всем, что в ней было.

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

Далее запустим вышеупомянутый rtorrent. Делается это предельно просто — нужно указать screen команду для запуска. Тогда вместо командной оболочки откроется указанная программа:

Работа с несколькими скринами

Eсли вам нужно запустить лишь одну программу — вышеописанного более чем достаточно, но в случае если таких программ несколько — скринам нужно будет раздать имена, чтобы screen знала, к какому именно свернутому скрину вы хотите вернуться. Имя создаваемого скрина задается с помощью ключа -S:

screen -S rtor rtorrent

Cверните скрин с rtorrent’ом и запустите еще что-нибудь, к примеру nano:

screen -S nano nano

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

Список запущенных скринов можно посмотреть с помощью:

Возможно также вернуться к уже развернутому в ином терминале скрину:

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

Программу можно запустить сразу в свернутом скрине. Это полезно в случае с автозапуском, или когда вы знаете, что программа сама все сделает (установит соединение и продолжит закачку/раздачу в нашем примере с rtorrent), и смотреть там не на что. Делается все опять же просто. Команда на запуск будет такой:

screen -dmS rtor rtorrent

Ключ -d укажет, что скрин нужно свернуть, а ключ -m — что его нужно для начала создать. Процесс «усложняется» по той причине, что ключ -d по умолчанию используется для сворачивания ранее запущенного скрина, развернутого на другой консоли или в соседней вкладке, с той целью, чтобы развернуть его в текущем месте (ибо если одна и та же программа управляется из двух мест — это может и к конфузу привести). Таким образом нужная программа запустится сразу в фоне, а screen лишь выведет сообщение о том, что программа запущена, и скрин свернут.

Прочие возможности

Данная статья описывает лишь основы. На самом деле утилита screen обладает массой возможностей, например:

  • можно разбить экран пополам, отобразив несколько скринов с разными программами;
  • можно задать множество разных параметров, настроить под разные типа терминалов.

Во всем этом поможет разобраться screen –help или man screen или screen –h. . Также есть еще одна полезная комбинация клавиш. Как сказано в мануале, «если вам лень читать кучу текста — запомните эту комбинацию» — Ctrl+A и затем ? 1 ). Вам будет выведен список доступных сочетаний клавиш и команд, которые они выполняют. Все это нажимается также после Ctrl+A .

Выход/закрытие скрина, находясь в скрине:

Данная статья лишь кратко описывает возможности утилиты screen . Утилита screen обладает массой возможностей. Во всем поможет разобраться:

Установка Screen в CentOS:

yum install screen

В стандартных дисковых шаблонах Debian и Ubuntu эта утилита как правило уже присутствует.

Установка Screen в Debian:

apt-get install screen

Установка Screen в Ubuntu:

sudo apt-get install screen

Источник: y-ea.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru