• База знаний
  • /
  • Блог
  • /
  • Wiki
  • /
  • ONLINE CHAT
+380 (44) 364 05 71

Статья также доступна на украинском (перейти к просмотру).

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

Содержание

Часто возникает потребность в управлении несколькими независимыми сессиями в пределах одного экрана терминала Linux-системы. Это позволяет оптимизировать процесс администрирования и ускорить скорость обработки данных. Утилита Screen является одной из известнейших программ – терминальных мультиплексоров для реализации указанных возможностей по управлению системой. Она позволяет гибко настроить контроль запущенных псевдо терминалов в автоматическом режиме с выдачей соответствующих сообщений. Рассмотрим ее возможности и практическое использование на ОС Ubuntu 22.04.

Основные сведения о Screen

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

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

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

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

Установка Screen на VPS-сервер Ubuntu

Часто утилита уже присутствует в системе сразу же после ее развертывания. Но, на всякий случай, попытаемся ее установить на нашем сервере.

Прежде всего, обновим список пакетов:

$ sudo apt update

Обновление списка пакетов

Запустим процесс инсталляции:

$ sudo apt install screen

Запуск инсталяции программы

Выход команды: screen is already the newest version (4.9.0-1). Это означает, что приложение уже присутствует в системе. Ее версия - 4.9.0-1.

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

$ which screen

Проверка наличия программы

Результат: /usr/bin/screen. То есть, бинарный файл программы находится на своем месте, а значит она готова к работе.

Запуск и управление утилитой

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

$ screen

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

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

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

Терминальное окно

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

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

Например, сделаем запрос на номер версии программы, для чего нажмем Ctrl+a, а затем v. Результат показан ниже.

Провtрка версbb программы

В нижней части экрана появился ответ на наш запрос: screen 4.09.00 (GNU) 30-Jan-22

Теперь сделаем запрос на получение справочной информации по командным клавишам, для чего нажмем Ctrl+a ?. Список команд представлен ниже.

Справка программы screen

Если нажать клавишу space можно получить больше информации по командам.

Запустим известную утилиту для контроля за процессами на нашем сервере:

$ top

Результат команды top

Результат:

top - 14:20:34 up 29 days, 12 min, 3 users, load average: 0.00, 0.00, 0.00
Tasks: 116 total, 1 running, 115 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.8 us, 1.0 sy, 0.2 ni, 98.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 1915.7 total, 292.2 free, 738.1 used, 885.4 buff/cache
MiB Swap: 1865.0 total, 1863.5 free, 1.5 used. 590.9 avail Mem

799233 root 20 0 882320 64472 27532 S 0.3 3.3 1:56.76 bitninja-dispat
...................................................................................................
83 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 tpm_dev_wq

Создадим новый терминал или сессию для демонстрации совместной работы отдельных терминалов. Для этого достаточно нажать комбинацию клавиш Ctrl+a c. Вид экрана снова изменился:

Новое терминальное окно в screen

Теперь перед нами новое окно псевдо терминала, готовое к принятию команд. В то же время наше первое окно, настроенное на мониторинг процессов, никуда не исчезло, а только стало скрытым. То есть мы и теперь можем на него перейти. Для этого необходимо нажать Ctrl+a, n. Если бы у нас было окно, созданное после текущего, то перейти на него можно с помощью команды Ctrl+a, p. Таким образом, мы можем перемещаться между всеми запущенными окнами в обе стороны, последовательно изменяя текущее.

Посредством двойного нажатия комбинации Ctrl+a удобно перемещаться между двумя окнами. Эта комбинация открывает последнее окно, которое мы посещали.

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

Создадим два новых окна, после чего нажмем Ctrl+a w. В результате в нижней части экрана появится следующая информация:

Создание двух новых окон

Вихід команди:

0$ bash  1-$ bash  2*$ bash

Нумерация в списке начинается с нуля. Наличие символа «*» указывает на то, какое из окон является активным на данный момент. В нашем случае это терминал №2.

Для изменения текущего терминала достаточно указать его индексный номер. К примеру, сделаем активным окно №1. Для этого сразу после управляющих клавиш нажмем число 1, после чего снова выведем список.

Изменение терминала

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

Перейдем в терминал с запущенным мониторингом процессов (нулевой индекс) и переименуем его. Это можно сделать с помощью команды Ctrl+a A.

В результате, в нижней части активного окна с левой стороны появится поле, к которому введем новое название: new_monit (см. изображение). После этого нажмем Enter.

Переход к окну с запущеной командой top

Снова выведем список окон, чтобы убедиться, что название изменилось. Результат приведен ниже.

Вывод списка окон

Итак, название окна изменилось и теперь вместо bash стало new_monit.

Таким образом, мы теперь в состоянии выполнить основные операции с окнами – создавать, переименовывать, выводить весь список и перемещаться между ними. Не хватает только операции для их удаления или закрытия. Для этого используется клавиша k. Продемонстрируем этот процесс.

Сделаем активным окно №2 и попытаемся закрыть его, нажав Ctrl-a k

Активация второго окна

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

Закрытие второго окна

Итак, окно №2 теперь закрыто.

Для выхода из программы с закрытием всех окон используется комбинация Ctrl+a \. Нажимаем соответствующие клавиши, после чего снова получаем запрос на подтверждение или отмену операции.

Виход из программы и закрытие всех окон

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

Работа программы завершена

Результат: screen is terminated. Есть, работа программы завершен.

Управление сессиями в рамках одного сеанса

Выше было продемонстрировано закрытие всех запущенных окон. При этом все сессии были разрушены. Однако в некоторых случаях важно обеспечить непрерывную работу терминала, не прерывая сессию. Для этого предусмотрено наличие в программе режима отключения, при котором сессия фактически переходит в фоновый режим, а пользователь получает доступ к базовому терминалу. Режим включается для текущего окна с помощью команды Ctrl+a d.

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

Нажмем Ctrl-a d, в результате чего экран изменится так, как показано ниже.

Закрытие программы без закрытия сессии

Над строкой приглашения выведено информационное сообщение – [detached from 2411134.pts-0.dedicated]. Это означает, что сессия работает по-прежнему только в фоновом режиме, а мы можем одновременно работать в базовом терминале. Такое сочетание очень удобно с точки зрения администрирования системы.

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

$ screen –r

Возврат к запущенной сессии

Опция -r осуществляет повторное подключение к сессии. Теперь мы снова вернулись к нашей первой сессии.

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

$ screen –ls

Результат выполнения команды будет следующим:

2411134.pts-0.Blank (08/07/2024 17:25:32 PM) (Detached)
2411235.pts-0.Blank (08/07/2024 17:25:45 PM) (Detached)
2 Sockets in /var/run/screen/S-justin.

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

$ screen –r N

Где N – омер сессии, полученный по результатам выполнения предыдущей команды.

В случае, если необходимо подключить сессию на нескольких устройствах, используется команда с параметром -x:

$ screen -x

Работа с областями экрана

<pРазработчики предусмотрели возможность одновременной работы со всеми или несколькими одновременно отображаемыми на экране окнами. Для этого было введено понятие «область» или «region».

Для разбиения крана в несколько областей существует ряд команд. Приведем некоторые из них:

Ctrl+a « – показать все терминалы;

Ctrl+a S – разбиение текущей области по горизонтали;

Ctrl+a | – разбиение текущей области по вертикали;

Ctrl+a [tab] – перемещение между областями;

Ctrl+X – уничтожение текущей области;

Ctrl+a Q – возврат в одну область (текущую).

Например, разобьем по горизонтали окно, в котором мы мониторим системные процессы. Для этого нажмем Ctrl+a S. Результат показан ниже.

Разбитие области по горизонтали

ТТеперь разобьем текущую область по вертикали, нажав Ctrl+a |. Как видно из изображения, команда успешно сработала.

Разбитие области по вертикали

Дополнительные возможности по управлению терминалами

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

Одна из них:

Ctrl+a _ - включение режима отслеживания определенного события в другом окне.

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

$ ping –c 7 www.meta.ua

Здесь пинг к указанному сайту будет производиться семь раз. Для получения сообщения о его завершении нажмем Ctrl+a _, после чего в нижней части экрана появится следующее сообщение:

Закрытие работи окна и ответ программы

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

ДДля мониторинга активности в каком-либо из окон используется следующая управляющая конструкция:

$ sleep 30 && echo “output”

Мониторинг активности окна

После ее запуска следует нажать клавиши Ctrl+a M. В нижней части экрана отображается следующее сообщение:

Сообщение о мониторинге окна 5

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

Если нам нужен журнал всех запущенных нами команд, мы должны зарегистрировать сеанс с помощью команды Ctrl+a H. На выходе получаем:

Создание журнала всех запущенных программ

Выход команды: Creating logfile "screenlog.1". То есть, лог-файл с именем screenlog.1 успешно создан, что позволит нам в дальнейшем отслеживать возможные проблемы или ошибки.

Настройка параметров утилиты

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

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

$ nano /etc/screenrc

Файл программы screenrc для изменения настроек

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

Дата-центр FREEhost.UA предлагает аренду виртуальных и физических серверов с поддержкой 24/7. Предлагаем Вам ознакомиться со списком конфигураций выделенных серверов на нашем сайте. Серверы доступны, сервер пользователю выдаем уже настроенным, в течение одного рабочего дня.

Подписывайтесь на наш телеграм-канал https://t.me/freehostua, чтобы быть в курсе новых полезных материалов

Смотрите наш канал Youtube на https://www.youtube.com/freehostua.

Мы в чем ошиблись, или что-то пропустили?

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

Дата: 12.07.2024
Автор: Александр Ровник
Голосование

Авторам статьи важно Ваше мнение. Будем рады его обсудить с Вами:

comments powered by Disqus
navigate
go
exit
Спасибо, что выбираете FREEhost.UA