Статья также доступна на украинском (перейти к просмотру).
Содержание
- Основні відомості про Screen
- Встановлення Screen на VPS-сервер Ubuntu
- >Запуск та управління утилітою
- Управління сесіями у межах одного сеансу
- Робота із областями екрану
- Додаткові можливості по управлінню терміналами
- Налаштування параметрів утиліти
Часто возникает потребность в управлении несколькими независимыми сессиями в пределах одного экрана терминала 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
Поздравительная страница программы содержит информацию по ее лицензированию, что полностью соответствует современным стандартам. Для перехода в рабочий режим достаточно нажать Enter, что мы и делаем.
В результате наш экран очищается и остается только приглашение командной строчки, как и в обычном терминальном режиме (см. изображение).
Таким образом, мы получили первое терминальное окно, которому по умолчанию присваивается нулевой индекс. Мы можем здесь вводить любые команды, запускать программы и выполнять любые другие действия, в частности, связанные с администрированием системы, равно как и в базовом терминале.
Если нам понадобятся любые функции screen, связанные с управлением окнами, мы всегда должны начинать с ввода комбинации двух управляющих клавиш Ctrl+a, после которых может вводиться цифра от 0 до 9 или другой символ в зависимости от требуемой нам функциональности.
Например, сделаем запрос на номер версии программы, для чего нажмем Ctrl+a, а затем v. Результат показан ниже.
В нижней части экрана появился ответ на наш запрос: screen 4.09.00 (GNU) 30-Jan-22
Теперь сделаем запрос на получение справочной информации по командным клавишам, для чего нажмем Ctrl+a ?. Список команд представлен ниже.
Если нажать клавишу space можно получить больше информации по командам.
Запустим известную утилиту для контроля за процессами на нашем сервере:
$ 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. Вид экрана снова изменился:
Теперь перед нами новое окно псевдо терминала, готовое к принятию команд. В то же время наше первое окно, настроенное на мониторинг процессов, никуда не исчезло, а только стало скрытым. То есть мы и теперь можем на него перейти. Для этого необходимо нажать 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.
Снова выведем список окон, чтобы убедиться, что название изменилось. Результат приведен ниже.
Итак, название окна изменилось и теперь вместо 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 будет контролироваться программой на предмет возникновения в нем любой активности. Мы сможем получать уведомления при выводе любых данных.
Если нам нужен журнал всех запущенных нами команд, мы должны зарегистрировать сеанс с помощью команды Ctrl+a H. На выходе получаем:
Выход команды: Creating logfile "screenlog.1". То есть, лог-файл с именем screenlog.1 успешно создан, что позволит нам в дальнейшем отслеживать возможные проблемы или ошибки.
Настройка параметров утилиты
Предусмотрена возможность настройки программы под свои потребности, изменяя значения настроек по умолчанию. Это можно сделать, открыв в редакторе файл конфигурации утилиты /etc/screenrc или же файл ~/.screenrc при его наличии.
Для, например, пересмотрим значение некоторых параметров, установленных по умолчанию. Для этого введем в терминале:
$ nano /etc/screenrc
Здесь, в частности, можно настроить прокрутку экрана с помощью параметра defscrollback, настроить строка состояния и еще многое. Все зависит от личных предпочтений Администратора. Естественно, после внесенных в файл конфигураций их нужно сохранить и выйти из редактора.
Дата-центр FREEhost.UA предлагает аренду виртуальных и физических серверов с поддержкой 24/7. Предлагаем Вам ознакомиться со списком конфигураций выделенных серверов на нашем сайте. Серверы доступны, сервер пользователю выдаем уже настроенным, в течение одного рабочего дня.
Подписывайтесь на наш телеграм-канал https://t.me/freehostua, чтобы быть в курсе новых полезных материалов
Смотрите наш канал Youtube на https://www.youtube.com/freehostua.
Мы в чем ошиблись, или что-то пропустили?
Напишите об этом в комментариях, мы с удовольствием ответим и обсуждаем Ваши замечания и предложения.
Дата: 12.07.2024 Автор: Александр Ровник
|
|
Авторам статьи важно Ваше мнение. Будем рады его обсудить с Вами:
comments powered by Disqus