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

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


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

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

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

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

  • Стандартная операция заключается в создании нового окна с оболочкой в нем, выполнении команды, а затем переводе окна в фоновый режим (так называемое «отсоединение»). Когда вы хотите посмотреть, как работает ваш процесс, вы можете снова вывести окно на передний план («повторно прикрепить») и использовать его снова. Это отлично подходит для длинных процессов, которые вы не хотите случайно завершить, закрыв окно терминала.
  • Запустив сеанс screen, вы можете создавать новые окна и запускать в них другие процессы. Вы можете легко переключаться между окнами, чтобы следить за их прогрессом. Вы также можете разделить окно терминала на вертикальные или горизонтальные области и отображать различные окна screen в одном окне.
  • Вы можете подключиться к удаленному компьютеру, запустить сеанс screen и запустить процесс. Вы можете отключиться от удаленного хоста, снова подключиться, и ваш процесс продолжит работу.
  • Вы можете разделить сеанс 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

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

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

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

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

screen -ls

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

screen -r 23167

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

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

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

exit

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

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

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

screen -S bigfile

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

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

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

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

screen -ls

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

screen -r bigfile

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

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

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

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

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

screen -S monitor

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

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

dmesg -H -w

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

Мы хотим запустить другое приложение, поэтому нам нужно новое окно screen. Мы нажимаем Ctrl+A, а затем C, чтобы создать новое окно. Мы собираемся использовать watch для повторного запуска 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.

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

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

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

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

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

Для нашего примера мы вводим следующее:

ssh dave@192.168.4.30

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

screen -S ssh-geek

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

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

top

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

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

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

exit

Мы вводим следующее для повторного подключения:

ssh dave@192.168.4.30

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

screen -r ssh-geek

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

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

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

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

Он напечатал следующее:

ssh dave@192.168.4.30

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

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

screen -d -m -S ssh-geek

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

screen -x ssh-geek

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

ssh dave@192.168.4.1

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

screen -X ssh-geek

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

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

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

RELATED: Best Linux Laptops for Developers and Enthusiasts