Screen — это полноэкранный оконный менеджер, который мультиплексирует физический терминал между несколькими процессами, обычно интерактивными оболочками.
Screen позволяет переключаться между терминалами, в которых выполняются процессы, не прерывая их. Это особенно эффективно, когда необходимо производить сборку/установку ПО и мониторить дисковое пространство или использовать аппаратные ресурсы.
Screen может разделять текущий терминал на несколько окон с возможностью запуска в них того же или других терминалов. Это ещё больше упрощает вышеописанную задачу, особенно при использовании больших мониторов.
Установка Screen
apt-get install screen
yum install screen
Начало работы с Screen
Чтобы запустить Screen, просто введите команду, как показано ниже, и нажмите Enter:
screen
Вы остались в командной строке, и, похоже, ничего особенного не произошло. Однако теперь вы запускаете оболочку внутри мультиплексного эмулятора терминала. Почему это хорошо? Что ж, давайте начнем процесс, который займет много времени. Мы загрузим исходный код последней версии ядра Linux и перенаправим его в файл с именем latest_kernel.zip.
curl https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.13.4.tar.xz > latest_kernel.zip
Чтобы отключиться от текущего экрана, используйте комбинацию клавиш «Ctrl + a», а затем нажмите клавишу «d».
Процесс загрузки все еще продолжается, но окно, показывающее загрузку, скрыто. Вы вернетесь в окно терминала, из которого вы запустили сеанс экрана. Появится сообщение о том, что экранное окно с меткой 48079.pts-0.TechSupport было отключено.
Вам понадобится номер от начала имени окна, чтобы прикрепить его заново. Если вы его забудете, вы всегда можете использовать параметр -ls (список), как показано ниже, чтобы получить список отсоединенных окон:
screen -ls
screen -r 48079
Если это процесс, который дойдет до своего завершения, он в конечном итоге будет завершен. Если это непрерывный процесс, вы в конечном итоге захотите его прекратить. В любом случае, когда процесс завершится, вы можете ввести exit для выхода с экрана. Кроме того, вы можете нажать «Ctrl + a», а затем «k», чтобы принудительно закрыть окно.
Вы вернетесь в предыдущее окно терминала, в котором по-прежнему будет отображаться команда, которую вы использовали для повторного присоединения окна. Поскольку мы закрыли наше единственное отдельное окно, мы получаем сообщение о завершении работы Screen.
Использование имен сеансов Screen
Вы можете использовать параметр -S (имя сеанса) для присвоения имени сеансу Screen. Если вы используете запоминающееся имя, а не числовое обозначение сеанса, будет удобнее повторно подключиться к сеансу. Мы вводим следующее, чтобы назвать нашу сессию «bigfile»:
screen -S bigfile
Когда Screen запускает нашу сессию, мы видим пустое окно с командной строкой. Мы собираемся загрузить большой файл, поэтому мы можем использовать в качестве примера длительный процесс.
curl https://speed.hetzner.de/10GB.bin > bigfile.zip
screen -ls
За числовым идентификатором (48804) мы видим имя нашей сессии (bigfile). Мы вводим следующее, включая имя сеанса, чтобы повторно присоединить его:
screen -r bigfile
Мы повторно подключаемся к нашему окну загрузки и видим, что длительная загрузка все еще выполняется.
Использование Screen с несколькими окнами
Мы вводим следующую команду, чтобы начать сеанс Screen под названием “monitor”:
screen -S monitor
dmesg -H -w
Появятся существующие сообщения. Мы не возвращаемся в командную строку, потому что dmseg ожидает новых сообщений и будет отображать их по мере их поступления.
Мы хотим запустить другое приложение, поэтому нам нужно новое экранное окно. Нажимаем «Ctrl + а», а затем «с», чтобы создать новое окно. Мы собираемся использовать команду watch для многократного запуска vmstat, чтобы получать часто обновляемое отображение использования виртуальной памяти на нашем компьютере.
В новой командной строке мы вводим следующее:
watch vmstat
Теперь два наших процесса работают. Чтобы переключаться между окнами Screen, вы нажимаете «Ctrl + a» и номер окна. Первое, что мы создали, — это нулевое окно (0), следующее — окно 1 и так далее. Чтобы перейти к первому окну (dmesg), мы нажимаем «Ctrl + a» и «0».
Если мы нажмем Ctrl + a и 1, это вернет нас в окно vmstat.
Мы можем нажать Ctrl + a, а затем d, чтобы отключиться от этого сеанса, затем мы можем подключиться позже. Обе сессии по-прежнему будут работать. Чтобы переключаться между окнами, мы нажимаем «Ctrl + a» и номер (0 или 1) окна, в которое хотим переключиться.

Курсор переместится в нижнюю область, которая на самом деле представляет собой просто пустое место. Это не оболочка, поэтому мы не можем в ней ничего вводить. Чтобы получить удобное отображение, мы нажимаем «Ctrl + a», а затем нажимаем «0», чтобы отобразить окно dmesg в этой области.
Ctrl+A, S: Разделить окно по горизонтали.
Ctrl+A, Tab: Перейти в нижнюю область.
Ctrl+A, 0: Отображение нулевого окна в нижней части.
Мы можем пойти еще дальше. Теперь разделим нижнюю панель по вертикали и добавим на экран третий процесс. Когда курсор находится в нижней части, мы нажимаем «Ctrl + a» и «c», чтобы создать новое окно с оболочкой в нем. Нижняя область отображает новое окно и дает нам командную строку.
Затем мы запускаем команду df, чтобы проверить использование файловой системы:
df
Когда мы видим, что df запущен, мы нажимаем «Ctrl + a» и вертикальную черту (|). Это разделит нижнюю часть по вертикали. Нажимаем «Ctrl + a» и «Tab», чтобы перейти в новую область. Затем мы нажимаем «Ctrl + a» и «0», чтобы отобразить окно dmesg.
Также вы можете перемещаться из области в область и добавлять вертикальные или горизонтальные разделения. Вот еще несколько полезных комбинаций клавиш:
Ctrl+A: Переходите назад и вперед между текущей и предыдущим областями.
Ctrl+A, Q: Закрыть все области, кроме текущей.
Ctrl+A, X: Закрыть текущую область.
Совместное использование сеанса Screen
Вы также можете использовать сеанс screen, чтобы два человека могли видеть одно и то же окно и взаимодействовать с ним. Допустим, кто-то хочет подключиться к нашему серверу Ubuntu.
Он напечатал следующее:
ssh [email protected]
После подключения он запускает сеанс Screen под названием «ssh-share», используя параметр -S (имя сеанса). Он также использует параметры -d (отсоединение) и -m (принудительное создание) для создания нового сеанса экрана, который уже отсоединен.
Он набирает следующие:
screen -d -m -S ssh-share
Он набирает следующее, используя параметр -x (многоэкранный режим) для подключения сеанса:
screen -x ssh-share
На другом компьютере другой человек подключается к компьютеру Ubuntu с теми же учетными данными, как показано ниже:
ssh [email protected]
После подключения он набирает команду Screen и использует параметр -X (многоэкранный режим), чтобы присоединиться к одному и тому же оконному сеансу, например:
screen -X ssh-share
Теперь все, что напечатает один из них, увидит другой. Например, когда один человек запускает команду nslookup, они оба видят ее как напечатанную, так и ее вывод.
Оба человека теперь совместно используют сеанс экрана, который выполняется на удаленном компьютере с Ubuntu.
Для программного обеспечения, впервые увидевшего свет в 1987 году, Screen по-прежнему обеспечивает хорошую производительность. Время на ознакомление с ним будет потраченным не зря!