Поиск по сайту:

Примеры экранных команд для управления несколькими сеансами терминала

В этом руководстве мы увидим, что такое GNU Screen, и основные принципы использования команды Screen с примерами в операционных системах Linux и Unix.

Что такое экран GNU?

GNU Screen — это терминальный мультиплексор (оконный менеджер). Как следует из названия, Screen мультиплексирует физический терминал между несколькими интерактивными оболочками, поэтому мы можем выполнять разные задачи в каждом сеансе терминала.

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

Например, при обновлении сервера Ubuntu через SSH команда Screen продолжит процесс обновления на тот случай, если ваш сеанс SSH будет прерван по какой-либо причине.

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

GNU Screen — один из важных инструментов командной строки, который каждый администратор Linux должен изучить и использовать при необходимости.

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

Установите GNU Screen в Linux

GNU Screen доступен в репозиториях по умолчанию большинства операционных систем Linux.

Чтобы установить GNU Screen в Arch Linux, EndeavourOS, Manjaro Linux, запустите:

sudo pacman -S screen

В Debian, Ubuntu, Linux Mint:

sudo apt-get install screen

В Fedora, RHEL, CentOS. АльмаЛинукс, Рокки Линукс:

sudo dnf install screen

Или,

sudo yum install screen

В CentOS 8 Screen недоступен в официальных репозиториях. Поэтому вам нужно включить репозиторий [EPEL], а затем установить screen.

sudo dnf install epel-release
sudo dnf install screen

В SUSE/openSUSE:

sudo zypper install screen

Давайте продолжим и посмотрим несколько примеров экранных команд.

Примеры экранных команд

Ярлык префикса по умолчанию для всех команд на экране — Ctrl+a. Вам придется часто использовать этот ярлык при использовании Screen. Итак, просто запомните это сочетание клавиш.

Создать новый сеанс экрана

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

screen

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

Отключиться от сеансов Screen

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

[detached from 29149.pts-0.sk]

Здесь 29149 — это идентификатор экрана, а pts-0.sk — имя сеанса экрана. Вы можете присоединять, отключать и завершать сеансы Screen, используя идентификатор экрана или имя соответствующего сеанса.

Создать именованный сеанс

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

screen -S ostechnix

Приведенная выше команда создаст новый сеанс экрана с именем "xxxxx.ostechnix" и немедленно подключится к нему. Чтобы отключиться от текущего сеанса, нажмите Ctrl+a, а затем d.

Именование сеансов экрана может оказаться полезным, если вы хотите узнать, какие процессы в каких сеансах выполняются. Например, если стек LAMP настроен внутри сеанса, вы можете просто назвать его, как показано ниже.

screen -S lampstack

Создание отдельных сеансов

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

screen -S senthil -d -m

Или, короче:

screen -dmS senthil

Приведенная выше команда создаст сеанс под названием «senthil», но не подключится к нему.

Список сеансов экрана

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

screen -ls

Пример вывода:

There are screens on:
    29700.senthil   (Detached)
    29415.ostechnix (Detached)
    29149.pts-0.sk  (Detached)
3 Sockets in /run/screens/S-sk.

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

Если не было запущенных сеансов экрана, вы получите результат, как показано ниже.

No Sockets found in /run/screen/S-sk.

Прикрепить к сеансам Screen

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

screen -r 29415.ostechnix

Или,

screen -r ostechnix

Или просто используйте идентификатор экрана:

screen -r 29415

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

screen -ls

Пример вывода:

There are screens on:
        29700.senthil   (Detached)
        29415.ostechnix (Attached)
        29149.pts-0.sk  (Detached)
3 Sockets in /run/screens/S-sk.

Как видно из приведенного выше вывода, в настоящее время мы подключены к сеансу 29415.ostechnix . Чтобы выйти из текущего сеанса, нажмите ctrl+a, d.

Создание вложенных сеансов

Когда мы запускаем команду «screen», она создаст для нас один сеанс. Однако мы можем создавать вложенные сеансы (сеанс внутри сеанса).

Сначала создайте новый сеанс или присоединитесь к открытому сеансу. Я собираюсь создать новый сеанс с именем «вложенный».

screen -S nested

Теперь нажмите Ctrl+a и c внутри сеанса, чтобы создать еще один сеанс. Просто повторите это, чтобы создать любое количество вложенных сеансов Screen. Каждому сеансу будет присвоен номер. Номер будет начинаться с 0.

Вы можете перейти к следующему сеансу, нажав Ctrl+n, и перейти к предыдущему, нажав Ctrl+p.

Вот список важных сочетаний клавиш для управления вложенными сеансами.

  • Ctrl+a ” – список всех сеансов.
  • Ctrl+a 0 — переключиться на сеанс номер 0.
  • Ctrl+a n — перейти к следующему сеансу.
  • Ctrl+a p — переход к предыдущему сеансу.
  • Ctrl+a S — разделить текущий регион по горизонтали на два региона.
  • Ctrl+a l — разделить текущий регион по вертикали на два региона.
  • Ctrl+a Q — закрыть все сеансы, кроме текущего.
  • Ctrl+a X — закрыть текущий сеанс.
  • Ctrl+a \ — завершить все сеансы и закрыть Screen
  • Ctrl+a ? — показать сочетания клавиш. Чтобы выйти из этого, нажмите ENTER.

Блокировка сеансов

Screen имеет возможность заблокировать сеанс экрана. Для этого нажмите Ctrl+a и x. Введите свой пароль Linux, чтобы заблокировать экран.

Screen used by sk <sk> on ubuntuserver.
Password:

Протоколирование сеансов

Возможно, вы захотите записать все, что происходит во время сеанса Screen. Для этого просто нажмите Ctrl+a и H.

Альтернативно вы можете включить ведение журнала при запуске нового сеанса, используя параметр -L.

screen -L

С этого момента все действия, которые вы совершаете внутри сеанса, будут записываться и храниться в файле с именем screenlog.x в вашем каталоге $HOME. Здесь x — число.

Вы можете просмотреть содержимое файла журнала с помощью команды cat или любого приложения для просмотра текста.

Записывать сеансы экрана

Рекомендуем прочитать:

  • Как записывать все, что вы делаете в терминале

Сеансы автозапуска экрана

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

  • Как автоматически запустить сеанс Screen в Linux при входе в систему

Проверьте, участвуете ли вы в сеансе Screen или нет.

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

  • Как проверить, находитесь ли вы в сеансе Screen или нет в Linux

Сеансы Kill Screen

Если сеанс больше не требуется, просто завершите его. Чтобы завершить отключенный сеанс с именем «sentil»:

screen -r senthil -X quit

Или,

screen -X -S senthil quit

Или,

screen -X -S 29415 quit

Если открытых сеансов нет, вы увидите следующий вывод:

screen -ls
No Sockets found in /run/screens/S-sk.

Более подробную информацию можно найти на страницах руководства.

man screen

Существует также аналогичная утилита командной строки под названием "Tmux", которая выполняет ту же работу, что и GNU Screen. Чтобы узнать больше об этом, обратитесь к следующему руководству.

  • Примеры команд Tmux для управления несколькими сеансами терминала

Ресурс:

  • Главная страница экрана GNU

Статьи по данной тематике