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

Опубликовано: 2022-01-29
Терминал Linux на ноутбуке с другими сеансами терминала, наложенными за ним.
Фатмавати Ачмад Заэнури/Shutterstock

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

СВЯЗАННЫЕ: 10 основных команд Linux для начинающих

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

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

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

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

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

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

 экран установки sudo apt-get 

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

 sudo pacman -Sy экран 

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

 экран установки sudo dnf 

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

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

 экран 

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

Реклама

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

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

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

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

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

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

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

 экран -ls 

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

 экран -r 23167 

Реклама

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

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

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

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

 выход 

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

СВЯЗАННЫЕ С: Как использовать curl для загрузки файлов из командной строки Linux

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

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

 экран -S большой файл 

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

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

 завиток http://ipv4.download.thinkbroadband.com/1GB.zip > bigfile.zip 

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

 экран -ls 

Реклама

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

 экран -r большой файл 

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

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

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

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

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

 экран -S монитор 

Реклама

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

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

 dmesg -H -w 

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

СВЯЗАННЫЕ С: Как использовать команду dmesg в Linux

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

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

 смотреть vmstat 

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

Теперь два наших процесса запущены. Чтобы переключаться между окнами screen , вы нажимаете 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 работает, мы нажимаем Ctrl+A и символ вертикальной черты (|) . Это разделит нижнюю область по вертикали. Мы нажимаем Ctrl+A и Tab, чтобы перейти к новой области. Затем мы нажимаем Ctrl+A и 0, чтобы отобразить окно dmesg .

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

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

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

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

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

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

 ssh дэйв@192.168.4.30 

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

 экран -S ssh-выродок 

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

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

 верхняя 

Реклама

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

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

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

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

 выход 

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

 ssh дэйв@192.168.4.30 

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

 экран -r ssh-выродок 

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

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

СВЯЗАННЫЕ С: Как создать и установить ключи SSH из оболочки Linux

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

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

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

 ssh дэйв@192.168.4.30 

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

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

 экран -d -m -S ssh-выродок 

Реклама

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

 экран -x ssh-выродок 

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

 ssh дэйв@192.168.4.1 

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

 экран -X ssh-выродок 

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

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


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

СВЯЗАННЫЕ: 37 важных команд Linux, которые вы должны знать

СВЯЗАННЫЕ С: Лучшие ноутбуки с Linux для разработчиков и энтузиастов