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

Как использовать экранный терминальный мультиплексор в Linux


Вы хотите запускать несколько сеансов виртуального экрана с одной консоли терминала? Или избежать разрывов подключения к Интернету из-за завершения сеанса консоли через SSH? Если это так, добро пожаловать в свой набор инструментов с мультиплексором терминала GNU Screen уже сегодня!

Использование утилиты экрана GNU

Утилита GNU Screen для Linux — это универсальный мультиплексор экрана, который позволяет вам запускать несколько сеансов виртуального экрана (думайте о них как о дополнительных окнах консоли) из текущего сеанса терминала!

Начать работу легко. Вы можете установить инструмент GNU Screen с помощью sudo apt install screen в командной строке терминала:

Если вы используете операционную систему на основе RedHat/RPM, замените \\apt\\ на \\yum\\ в приведенной выше команде.

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

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

Одна из замечательных особенностей экрана GNU заключается в том, что даже если сеанс основного/родительского терминала каким-то образом выйдет из строя или выйдет из строя (например, из-за потери сетевого подключения), и даже когда вы закроете или завершите сеанс основного/родительского терминала, это сессия screen будет продолжать работать!

Легко проверить, находимся ли мы в настоящее время в сеансе экрана или нет:

Этот оператор if проверяет, установлена ли переменная $STY или нет. Если установлена переменная окружения $STY, то это сеанс экрана.

Итак, как нам вернуться к нашему основному/родительскому сеансу терминала? Это можно сделать с помощью комбинации клавиш, которую экран GNU будет прослушивать в фоновом режиме. Просто нажмите CTRL+A > CTRL+D. Неважно, отпустите ли вы при этом клавишу CTRL или нет.

Вы увидите что-то похожее на этот вывод:

Это также говорит нам, что мы только отсоединились от сеанса виртуального экрана GNU — он не завершился, и, если мы хотим, мы можем снова подключиться к нему. Даже если бы по какой-то причине основной/родительский сеанс закрылся, сеанс виртуального экрана не завершился бы, и мы снова можем подключиться к нему.

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

Подтверждение этой команды просто вернет нас к сеансу виртуального экрана, который у нас был запущен. Обратите внимание, что мы использовали соответствующий идентификатор процесса (который сообщается при отключении от сеанса экрана) для повторного подключения к сеансу виртуального экрана. Это также сразу проясняет, как мы можем запускать неограниченное количество сеансов экрана (хотя каждый из них будет потреблять некоторое количество ресурсов) и подключаться к любому из них с помощью команды screen -d -r.

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

Для более широкого обзора экрана и его многочисленных функций вы можете использовать команду man screen:

Если мы хотим увидеть список сеансов экрана, которые в данный момент запущены на машине, мы можем ввести команду screen -list:

Обратите внимание, что сеанс сообщается как «Отсоединенный» или «Присоединенный» в зависимости от того, подключены ли вы к нему где-то или нет.

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

Вместо этого вы можете использовать комбинацию клавиш CTRL+ESC, чтобы включить режим копирования (хотя фактическое копирование не выполняется, если вы выполняете только прокрутку), и теперь ваша мышь, а также стандартные клавиши курсора вверх/вниз будут работать правильно. Когда вы закончите поиск (и/или копирование, если хотите, например, когда мышь выбирает и копирует как обычно), просто снова нажмите клавишу ESC, чтобы выйти из режима копирования.

Иногда программа, работающая внутри экрана, может аварийно завершать работу, например, из-за программной ошибки или нехватки памяти или диска. Если это произойдет, экран будет отображаться как «Dead» в выводе screen -list:

В этот момент мы можем стереть мертвый сеанс экрана, выполнив команду screen -wipe:

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