Как использовать экранный терминальный мультиплексор в 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, как запустить новый сеанс виртуального экрана, используя его, и как отсоединиться от существующего сеанса экрана и снова подключиться к нему. Наконец, мы рассмотрим, как прокручивать сеансы внутри экрана, а также как обрабатывать сеансы мертвого экрана.