Как использовать экранную команду Linux

С помощью команды Linux screen вы можете перевести запущенные терминальные приложения в фоновый режим и перетащить их вперед, когда захотите их увидеть. Он также поддерживает дисплеи с разделенным экраном и работает через SSH-соединения даже после отключения и повторного подключения!

Что такое экранная команда?

Экранная команда — это оконечный мультиплексор, и он абсолютно упакован с опциями. Сказать, что он может на многое, значит ничего не сказать. Страница руководства насчитывает более 4100 строк.

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

Стандартная операция — создать новое окно с оболочкой в ​​нем, запустить команду и затем переместить окно в фоновый режим (так называемое «отсоединение»). Если вы хотите увидеть, как работает ваш процесс, вы можете снова вывести окно на передний план («повторно прикрепить») и использовать его снова. Это отлично подходит для длительных процессов, которые вы не хотите случайно завершить, закрыв окно терминала.
После запуска сеанса экрана вы можете создавать новые окна и запускать в них другие процессы. Вы можете легко переключаться между окнами, чтобы отслеживать их прогресс. Вы также можете разделить окно терминала на вертикальные или горизонтальные области и отображать различные окна экрана в одном окне.
Вы можете подключиться к удаленному компьютеру, запустить сеанс экрана и запустить процесс. Вы можете отключиться от удаленного хоста, повторно подключиться, и ваш процесс все равно будет работать.
Вы можете поделиться сеансом экрана между двумя разными SSH-соединениями, чтобы два человека могли видеть одно и то же в режиме реального времени.

Установка экрана

Чтобы установить screen на ubuntu, используйте эту команду:

sudo apt-get install screen

В

Чтобы установить screen на Manjaro, используйте следующую команду:

sudo pacman -Sy screen

В

В Fedora вы вводите следующее:

sudo dnf install screen

В

Начало работы с экраном

Чтобы запустить экран, просто введите его, как показано ниже, и нажмите Enter:

screen

В

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

В

Вы остались в командной строке, и, похоже, ничего особенного не произошло. Однако теперь вы запускаете оболочку внутри мультиплексированного эмулятора терминала. Почему это хорошо? Что ж, давайте начнем процесс, который займет много времени. Мы загрузим исходный код последней версии ядра Linux и перенаправим его в файл с именем latest_kernel.zip.

Для этого мы набираем следующее:

curl https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.5.9.tar.xz > latest_kernel.zip

В latest_kernel.zip »в окне терминала. ‘ width = ”646 ″ height =” 77 ″ onload = ”pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this);» onerror = ”this.onerror = null; pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this);”>

Наша загрузка начинается, и вывод curl показывает нам прогресс.

Выход из latest_kernel.zip »в окне терминала. ‘ width = ”646 ″ height =” 247 ″ onload = ”pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this);» onerror = ”this.onerror = null; pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this);”>

  Как играть в God of War на Linux

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

Процесс загрузки все еще продолжается, но окно, показывающее загрузку, удалено. Вы вернетесь в окно терминала, из которого вы запустили сеанс экрана. Появится сообщение о том, что экранное окно с меткой 23167.pts-0.howtogeek было отключено.

Вам нужен номер от начала имени окна, чтобы прикрепить его. Если вы его забудете, вы всегда можете использовать параметр -ls (list), как показано ниже, чтобы получить список отсоединенных окон:

screen -ls

В

Когда вы будете готовы, вы можете использовать параметр -r (повторное подключение) и номер сеанса, чтобы повторно подключить его, например:

screen -r 23167

В

Окно, которое работало в фоновом режиме, теперь возвращается в окно вашего терминала, как будто оно никогда не покидало его.

Повторно подключенный сеанс экрана восстановлен в окне терминала.

Если это процесс, который дойдет до своего завершения, он в конечном итоге завершится. Если это непрерывный процесс, вы в конечном итоге захотите его прекратить. В любом случае, когда процесс завершится, вы можете ввести exit, чтобы выйти из экрана. Как вариант, вы можете нажать Ctrl + A, а затем K, чтобы принудительно закрыть окно.

Введите следующую команду:

exit

В

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

В

Использование именованных сеансов экрана

Вы можете использовать параметр -S (имя сеанса) для присвоения имени сеансу экрана. Если вы используете запоминающееся имя, а не числовое обозначение сеанса, будет удобнее повторно подключиться к сеансу. Мы вводим следующее, чтобы назвать нашу сессию «bigfile»:

screen -S bigfile

В

Когда screen запускает нашу сессию, мы видим пустое окно с командной строкой. Мы собираемся загрузить большой файл, поэтому мы можем использовать в качестве примера длительный процесс.

Набираем следующее:

curl http://ipv4.download.thinkbroadband.com/1GB.zip > bigfile.zip

В bigfile.zip »в окне терминала. ‘ width = ”646 ″ height =” 77 ″ onload = ”pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this);» onerror = ”this.onerror = null; pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this);”>

Когда начинается загрузка, мы нажимаем Ctrl + A, а затем нажимаем D, чтобы отключить сеанс. Мы вводим следующее, чтобы использовать параметр -ls (список) с экраном, чтобы увидеть детали нашего отключенного сеанса:

screen -ls

В

За числовым идентификатором (23266) мы видим имя нашей сессии (большой файл). Мы вводим следующее, включая имя сеанса, чтобы повторно присоединить его:

screen -r bigfile

В

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

Скрутите вывод загрузки в повторно подключенном сеансе экрана в окне терминала.

Когда загрузка завершится, мы набираем exit, чтобы закрыть окно сеанса.

Использование экрана в нескольких окнах

До сих пор мы использовали screen для помещения одного процесса в фоновый режим в отдельном окне. Однако экран способен на гораздо большее. Затем мы запустим несколько процессов, которые позволят нам отслеживать некоторые аспекты нашего компьютера.

Мы вводим следующее, чтобы начать сеанс экрана под названием «монитор»:

screen -S monitor

В

В командной строке в нашем новом сеансе окна мы запустим dmesg и воспользуемся параметрами -H (удобочитаемо) и -w (ждать новых сообщений). Это будет отображать сообщения буфера ядра; новые сообщения будут появляться по мере их появления.

  Как настроить Bittorrent-сервер передачи в Linux

Набираем следующее:

dmesg -H -w

В

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

В

Мы хотим запустить другое приложение, поэтому нам нужно новое экранное окно. Нажимаем Ctrl + A, а затем C, чтобы создать новое окно. Мы собираемся использовать часы, чтобы неоднократно запускать vmstat, поэтому мы получаем часто обновляемую отображение использования виртуальной памяти на нашем компьютере.

В новой командной строке мы вводим следующее:

watch vmstat

В

Вывод vmstat появляется и обновляется каждые две секунды.

В

Теперь два наших процесса работают. Чтобы переключаться между окнами экрана, вы нажимаете Ctrl + A и номер окна. Первое, что мы создали, — это нулевое окно (0), следующее — окно 1 и так далее. Чтобы перейти к первому окну (dmesg), мы нажимаем Ctrl + A и 0.

Возвращаясь к

Если мы нажмем Ctrl + A и 1, он вернет нас в окно vmstat.

Возвращаясь к

Это довольно здорово! Мы можем нажать Ctrl + A, а затем D, чтобы отключиться от этого сеанса; мы можем подключиться позже. Обе сессии по-прежнему будут работать. Опять же, чтобы переключаться между окнами, мы нажимаем Ctrl + A и номер (0 или 1) окна, в которое хотим переключиться.

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

Для этого нажимаем Ctrl + A, а затем Shift + S (требуется заглавная буква «S»).

Окно делится на две «области».

А

Верхняя область по-прежнему отображает vmstat, а нижняя область пуста. Курсор выделен на скриншоте ниже. Чтобы переместить его в нижнюю область, нажимаем Ctrl + A, а затем Tab.

А

Курсор переместится в нижнюю область, которая на самом деле представляет собой просто пустое место. Это не оболочка, поэтому мы не можем ничего вводить в нее. Чтобы получить удобное отображение, мы нажимаем Ctrl + A, а затем нажимаем «0», чтобы отобразить окно dmesg в этой области.

В

Это дает нам оба живых выхода в одном разделенном окне. Если мы нажмем Ctrl + A и D, чтобы отсоединить окно, а затем снова присоединить его, мы потеряем представление с разделенной панелью. Однако мы можем восстановить его с помощью следующих сочетаний клавиш:

Ctrl + A, S: разделить окно по горизонтали.
Ctrl + A, Tab: переход в нижнюю область.
Ctrl + A, 0: отображение нуля окна в нижней части.

Мы можем пойти еще дальше. Теперь разделим нижнюю панель по вертикали и добавим на дисплей третий процесс. Когда курсор находится в нижней части, мы нажимаем Ctrl + A и C, чтобы создать новое окно с оболочкой внутри. Нижняя область отображает новое окно и дает нам командную строку.

А

Затем мы запускаем команду df, чтобы проверить использование файловой системы:

df

А

Когда мы видим, что df запущен, мы нажимаем Ctrl + A и вертикальную черту (|). Это разделит нижнюю часть по вертикали. Нажимаем Ctrl + A и Tab, чтобы перейти в новую область. Затем мы нажимаем Ctrl + A и 0, чтобы отобразить окно dmesg.

  Как играть в Sniper Elite в Linux

А

Вы также можете перемещаться из региона в регион и добавлять вертикальные или горизонтальные разделения. Вот еще несколько полезных комбинаций клавиш:

Ctrl + A: переход между текущим и предыдущим регионами.
Ctrl + A, Q: закрыть все регионы, кроме текущего.
Ctrl + A, X: закрыть текущий регион.

Использование экрана через SSH

С помощью screen вы можете запустить сеанс окна, отсоединить его, чтобы он продолжал работать в фоновом режиме, выйти из системы или снова войти в нее и повторно подключить сеанс.

Сделаем SSH подключение к нашему компьютеру из другого с помощью команды ssh. Мы должны указать имя учетной записи, с которой мы собираемся подключиться, и адрес удаленного компьютера.

В нашем примере мы набираем следующее:

ssh [email protected]

В

После аутентификации на удаленном компьютере и входа в систему мы вводим следующее, чтобы начать сеанс экрана под названием «ssh-geek»:

screen -S ssh-geek

В

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

Набираем следующее:

top

В

Когда в окне запускается top, мы нажимаем Ctrl + A, а затем D, чтобы отсоединить окно.

В

Мы вернулись к исходному окну удаленного терминала.

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

Если мы введем exit, как показано ниже, он отключит сеанс SSH, и мы вернемся на наш локальный компьютер:

exit

В

Для переподключения набираем следующее:

ssh [email protected]

В

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

screen -r ssh-geek

В

Теперь мы снова подключены к нашему все еще работающему экземпляру top.

В

Это замечательно, если вы хотите запустить процесс на одной машине, а затем продолжить с того места, где вы остановились, на другой.

Совместное использование сеанса экрана

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

Он набирал следующее:

ssh [email protected]

В

После подключения он запускает сеанс экрана под названием «ssh-geek», используя параметр -S (имя сеанса). Он также использует параметры -d (отсоединение) и -m (принудительное создание) для создания нового сеанса экрана, который уже отсоединен.

Он набирает следующее:

screen -d -m -S ssh-geek

В

Он набирает следующее, используя параметр -X (многоэкранный режим), чтобы присоединить сеанс:

screen -X ssh-geek

В

На компьютере Manjaro другой человек подключается к компьютеру Ubuntu с теми же учетными данными, как показано ниже:

ssh [email protected]

В

После подключения она набирает экранную команду и использует параметр -X (многоэкранный режим) для присоединения к тому же сеансу окна, например:

screen -X ssh-geek

В

Теперь все, что набирает один из них, увидит другой. Например, когда один человек вводит команду даты, они оба видят ее как напечатанную, так и ее вывод.

В

Выход из

Оба человека теперь совместно используют сеанс экрана, запущенный на удаленном компьютере с Ubuntu.

Для программного обеспечения, впервые увидевшего свет в 1987 году, screen по-прежнему обеспечивает неплохую производительность. Ознакомление с ним будет потраченным не зря!