Screen linux ������� ���

ИТ База знаний

Курс по Asterisk

Полезно

— Узнать IP — адрес компьютера в интернете

— Онлайн генератор устойчивых паролей

— Онлайн калькулятор подсетей

— Калькулятор инсталляции IP — АТС Asterisk

— Руководство администратора FreePBX на русском языке

— Руководство администратора Cisco UCM/CME на русском языке

— Руководство администратора по Linux/Unix

Серверные решения

Телефония

FreePBX и Asterisk

Настройка программных телефонов

Корпоративные сети

Протоколы и стандарты

Как пользоваться утилитой screen в Linux?

Окно в «новую жизнь»

Сейчас вы точно прочувствуете важное команды screen . Бывало ли у вас такое, что вы выполняете (очень долго) команду в консоли — CLI на удаленной машине, будучи подключенным через SSH? Команда долго выполняется и близится к завершению как вдруг пропадает подключение, рвется SSH подключение и все, что вы делали — пропало?

Мини — курс по виртуализации

Знакомство с VMware vSphere 7 и технологией виртуализации в авторском мини — курсе от Михаила Якобсена

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

Немножко теории

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

Установка screen в Linux

Вообще, пакет screen предустановлен на большинстве современных Linux — дистров. Проверить можно командой:

Если случилось так, что у вас его нет — это можно быстро исправить простой установкой.

Установка screen в Ubuntu и Debian

Установка screen в CentOS и Fedora

Запуск screen в Linux

Чтобы запустить screen в консоли, просто наберите screen . Что может быть проще, не правда ли?

У вас откроется новая сессия в новом окне. Уже здесь вы можете вводить все нужные shell команды. Находясь в режиме скрина (screen) вы можете посмотреть список доступных вам команд управления этим режимом. Вот так:

Если не получается нажать указанную выше комбинацию, можно поступить проще: нажмите отдельно Ctrl+a , отпустите, а затем в консоль наберите ? и нажмите Enter

Сессия screen с именем

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

Например, вы можете запустить ping — замер хоста с 1С и назвать сессию так:

Всегда используйте скрин именно так. Будет значительно удобнее.

Как правильно работать с окнами в Windows

Как мы уже сказали, когда вы создаете новую screen — сессию, вы создадите новое окно с shell оболочкой внутри. И что интересно — внутри скрин сессии вы можете создать множество дополнительных окон. Чтобы это сделать, воспользуйтесь командой (внутри скрина) Ctrl+a и c . Новому окну будет назначен номер от 0 до 9 (первый свободный).

Ниже мы собрали все команды, которые понадобятся вам для управления скринами:

  • Ctrl+a и c — создать дополнительное окно ;
  • Ctrl+a и » — показать список всех имеющихся окон;
  • Ctrl+a и 0 — переключиться на окно с номером 0 (номер может быть иной);
  • Ctrl+a и A — переименовать текущее окно;
  • Ctrl+a и S — разделить окно по горизонтали на две области;
  • Ctrl+a и | — разделить окно по вертикали на две области;
  • Ctrl+a и tab — переключить рабочий фокус на следующую область разделенного окна;
  • Ctrl+a и Ctrl+a — переключить рабочий фокус на предыдущую область разделенного окна;
  • Ctrl+a и Q — закрыть все разделенные области кроме;
  • Ctrl+a и X — закрыть текущую область;
Читайте также:  Отключить smartscreen windows 2012

Выход из screen сессии

Вы можете легко выйти из screen — сессии набрав:

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

Возврат к screen сессии

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

Если у вас запущено больше чем одна screen — сессия, то после ключа r нужно указать ее ID. Узнать его просто с помощью команды:

Вывод этой команды будет выглядеть вот так:

В выводе выше мы выделили ID — сессий. Например, чтобы вернуться к сессии 32328 (pings_towards_1C), дайте команду:

Немножко кастомизации screen под вас

Когда screen запускается, он считывает свои конфигурационные параметры из /etc/screenrc и

/.screenrc , если файл присутствует. Так вот — мы можем легко перенастроить предпочтения использования screen и сделать это в файле .screenrc .

Посмотрите пример с комментариями, как мы закастомили screen для себя:

Типовой сценарий использования screen

Общий случай, так сказать. Обычно он состоит из следующих шагов:

  1. После SSH подключения к серверу, набираем screen ;
  2. Запускаем интересующую нас команду в режиме screen — сессии;
  3. Выполняем команду Ctrl + a и d , чтобы выйти из режима работы с экран-сессией
  4. Через какое-то время возвращаемся к запущенному ранее экрану командой screen -r

Выводы

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

Ах да, ещё мы научились кастомизировать screen под себя. Профит!

Онлайн курс по Linux

Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps

Источник

Использование утилиты screen в Linux

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

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

Установка утилиты screen в Linux

Утилита screen по умолчанию установлена в ряде дистрибутивов Linux. В CentOS 8 утилита по умолчанию не установлена, придется доставлять вручную с помощью пакетного менеджера:

# dnf install epel-release -y — устанавливаем репозиторий EPEL, где размещается данная утилита

# dnf install screen -y – устанавливаем утилиту

На Debian/Ubuntu установка выполняется так:

# apt install screen

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

Запуск и использование screen, работа с сессиями, фоновые процессы

Запустите сессию screen одной командой:

Чтобы вывести справку по использованию screen, нажмите комбинацию ctrl + a и после этого введите знак вопроса (?).

Вернуться к сессии screen можно через кнопку пробел (space)

Чтобы полностью закрыть терминал screen, нажмите сочетание клавиш ctrl +d:

Чтобы просто выйти из сессии screen, не закрывая ее полностью, используйтекомбинацию:

Ctrl +a d

Если у вас открыта одна сессия screen, вернуться к ней можно с помощью команды:

Проверить список запущенных сессий screen:

Если сессий несколько, можно получить ID сессии и подключиться к нужной:

Если вы запускаете несколько сессий screen, то удобнее будет называть их по имени процесса, который там выполняется. Например:

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

Есть еще очень удобная функция в screen — это разделение экрана (split). Экран можно делить как по горизонтали, так и по вертикали. Например, чтобы разделить экран по горизонтали, в сессии screen нужно нажать ctrl+a S.

Читайте также:  Обход ограничений мтс для windows 10

Экран разделится на две части. Чтобы переключиться на вторую часть, введите ctrl+a tab и после переключения для активации ctrl+a c. Одновременно в двух частях, можно запускать нужные скрипты или утилиты:

Чтобы разделить экран по вертикали, используйте ctrl+a |

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

Переключаемся по ним все также с помощью ctrl+a tab.

Чтобы закрыть все разделители и остаться в активном окне, используйте ctrl+a Q или просто пропишите в консоли only.

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

Еще несколько горячих клавиш screen:

  • Создать новое окно: Ctrl+a c
  • Перейти к следующем окну: Ctrl+a p
  • Перейти к предыдущему окну: Ctrl+a n
  • Изменить имя окна: Ctrl+a a
  • Уничтожить окно: Ctrl+a k
  • Перейти к окну с номером 1 (можно использовать цифры от 0 до 9): Ctrl+a 1

Для тонкой настройки параметров screen можно использовать конфигурационные файлы:

Полная справка по screen:

Сценарии использования screen в Linux

Чаще всего утилита screen используется для операций, которые выполняются продолжительное время и чувствительны к обрыву сессии. Это могут быть обновления, копирование файлов, создание бэкапа, запуск какого-то скрипта или процесса и многое другое. В моей практике не обходится и дня, чтобы я не воспользовался данной утилитой. Чаще всего, это перенос файлов с одного сервера на другой или объемные обновления пакетов. Например, можно запустить rsync файлов с одного сервера на другой:

# screen -S backup
# rsync -avzr —progress /var/www/site/ IP:/var/www/site/

Или запустите ping до какого-либо ресурса:

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

Скрин можно запустить с такими параметрами:

# screen -A -m -d -S B24 /usr/bin/su — bitrix -c «/usr/bin/php /var/www/integration/tools/parser.php»

Мы сразу запускаем терминал и в нем выполняем запуск php-парсер, который постоянно выполняет коннект к порталу Bitrix24. Проверим список запущенных терминалов:

И для максимальной надежности, можно новую сессию ssh запускать сразу с включенным screen. В файл /root/.bash_profile добавьте строчку screen:

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

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

Источник

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

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

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

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

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

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

Читайте также:  Как определить с какого диска грузится windows

Еще одной интересной особенностью 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 \034\034

Еще мне казалось неудобным каждый раз набирать 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, работающих с консолью.

Источник

Оцените статью