Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Введение в GNU Screen

Оригинал: An introduction to GNU Screen
Автор: Bob Murphy
Дата публикации: 2 марта 2017 года
Перевод: А. Кривошей
Дата перевода: февраль 2018 г.

GNU Screen (или просто Screen) - это полезная и универсальная, но несколько недооцененная утилита, которая, как часть проекта GNU, включена или доступна практически в каждом дистрибутиве Linux или UNIX. Screen - это терминальный мультиплексор, похожий на аналоги, которые можно найти в оконных менеджерах. Эта утилита особенно полезна, если вы работаете в виртуальной машине либо по SSH, либо в терминальной сессии. Две функции, которые я нахожу наиболее полезными, - это возможность открывать несколько окон в сеансе, и возможность отключать и повторно подключать Screen, не теряя текущий сеанс.

Screen запускается просто командой screen.

Основы Screen

Во-первых, немного о том, как управлять Screen. Программа работает с управляющей последовательностью Ctrl + a. Все символы, введенные в сессии screen, отправляются непосредственно в командную оболочку, за исключением Ctrl + a. Символ, введенный после Ctrl + a, определяет последовательность команд для screen. Например, Ctrl + a ? выводит страницу справки с привязками клавиш по умолчанию.

Screen позволяет создавать несколько окон в рамках одного терминала. Ввод Ctrl+a c запускает новое окно в Screen. Оно действует как независимое окно со своей командной оболочкой. Ctrl+a K убьет текущее окно.

Ctrl+a n и Ctrl+a p перемещают на следующий и предыдущий экраны соответственно. Альтернативно, Ctrl+a # переключает между сеансами экрана по очереди в том порядке, в котором они были запущены. Существует также команда, которая отображает список всех текущих окон и позволяет выбирать нужное с помощью клавиш курсора, это Ctrl+a ".

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

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

Установка Screen

Screen установлен по умолчанию в некоторых дистрибутивах, таких как SuSE и Slackware. Во всех дистрибутивах Linux, которые я пробовал, я мог установить Screen с помощью стандартного диспетчера пакетов из репозиториев по умолчанию. Например, в Red Hat Enterprise Linux или Fedora я мог использовать для установки yum или dnf, соответственно. В Debian и его производных, таких как Ubuntu, вы можете сделать то же самое с помощью apt-get. Я смог также установить Screen во FreeBSD, используя порты.

Расширенные функции Screen

Сеансы Screen можно разделить. Горизонтальное разделение выполняется с помощью Ctrl+a S. При этом ваше текущее окно будет разделено наполовину горизонтально. Переключение между областями осуществляется с помощью Ctrl+a Tab. Другие команды переключения между окнами также работают на разделенном экране. Разделенное окно можно удалить с помощью Ctrl+a X. В поздних версиях Screen горизонтальное разделение можно создать с помощью Ctrl+a |.

GNU Screen

Ведение лога текущих сеансов screen можно запустить с помощью команды Ctrl+a H, которая создаст файл calledscreenlog.X, где X - номер вашего сеанса screen. Скриншот того, что сейчас находится в вашем окне screen, можно сделать с помощью Ctrl+a h, при этом будет создан файл hardcopy.X. Сеанс screen можно заблокировать с помощью команды Ctrl+a x, которая заблокирует экран с использованием пароля текущего пользователя.

Почему GNU Screen?

Меня часто спрашивают, почему я использую Screen вместо чего-то более нового, такого как tmux? Мой ответ прост: GNU Screen прост в использовании и вездесущ. Он уже установлен на серверах, с которыми я работаю, и отлично выполняет свои задачи. Если бы у него были недостатоки, которые мне мешали бы работать, я бы быстро нашел лучший инструмент, но Screen удовлетворяет все мои запросы. Надеюсь, вы найдете GNU Screen таким же полезным, как я, и воспользуетесь этой часто забываемой утилитой.

Подробнее о GNU Screen можно почитать на странице руководства или здесь.