6.3.9 Запуск приложений в фоне с помощью SCREEN

В этой статье мы рассмотрим основные возможностях утилиты Screen.

Многие администраторы активно пользуются скрином при использовании SSH. Также он хорош для любого, кто активно пользуется терминалом для повседневных задач. Screen позволяет управлять несколькими сессиями из одной консоли или окна терминала. Утилита незаменима, когда к одному сеансу надо подключиться из двух мест одновременно или взаимодействовать с несколькими сессиями. Многие администраторы любят Screen за то, что при потере связи по SSH, могут вернуться в свою сессию, а выполняемые в момент разрыва операции не прервутся.

Установка, запуск и вывод помощи Screen

В ряде Linux дистрибутивов (а также MacOS) Screen присутствует по умолчанию. В случае с Ubuntu/Debian его требуется поставить отдельно. Сделать это можно, выполнив команду:

  1. apt-get install screen

Сразу после установки Screen готов к работе.

Для начала работы запустим Screen без параметров, создав новый скрин:

  1. screen

Сразу после запуска появится окно с информацией о создателях и лицензии и будет ожидаться нажатие пробела или Enter.

Команды Screen выполняются по горячим клавишам Ctrl-a. После однократного нажатия Screen ждет команду.

Запросим у Screen список всех команд:

Crtl+a -> ?

Если не получилось, попробуйте еще раз. Нажмите Ctrl+a, отпустите, введите ?.

Примеры практического применения Screen

Выйдем из помощи и попрактикуемся в использовании.

Для начала в текущем скрине (в списке он нулевой) запустим:

  1. ping 8.8.8.8

Теперь введем

Ctrl+a -> c

Этой командой мы создали новый скрин и теперь они работают одновременно.

Запустим в нем:

  1. ping 8.8.4.4

Для переключения между скринами можно либо указать номер скрина, либо выбрать скрин из списка:

  • Ctrl+a ->0 переведет нас на 0 скрин.
  • Ctrl+a ->“ выдаст меню для выбора скрина.
  • Ctrl+a ->n переключит на следующий скрин.
  • Ctrl+a ->p переключит на предыдущий скрин.

Теперь свернем Screen с нашими пингами. Для этого воспользуемся хоткеем

Ctrl+a ->d

После выполнения команды Screen свернется и мы попадем в наш терминал. Для того, чтобы вернуться, запустим утилиту с ключом -r:

screen -r

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

screen -x

после чего найти в выводе номер потерянного скрина и вернуть его командой:

screen -x n

где n — тот самый номер.

Вернуться в сессию можно и после разрыва соединения SSH при удаленном использовании Screen, что делает его незаменимым при выполнении множества работ.

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

  1. screen wget http://mirror.thehost.ua/debian-cd/7.8.0/amd64/iso-dvd/debian-update-7.8.0-amd64-DVD-1.iso

С помощью ключа -S при запуске Screen можно указать имя скрина.

  1. screen -S download wget http://mirror.thehost.ua/debian-cd/7.8.0/amd64/iso-dvd/debian-update-7.8.0-amd64-DVD-1.iso

Всегда есть возможность переименовать скрин хоткеем:

Ctrl+a ->A

Посмотреть все активные скрины можно командой:

  1. screen -list

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

  1. screen -x download

Скрины можно закрыть от посторонних хоткеем:

Ctrl+a ->x

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

Это делается хоткеем:

Ctrl+a ->S

Переключаться между регионами можно хоткеем:

Ctrl+a ->Tab

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

Закрываются регионы хоткеями:

Ctrl+a ->Q Закрыть все регионы кроме текущего Ctrl+a ->X Закрыть текущий регион

Как убрать приветственное окно в утилите Screen

После начала активного использования Screen, очень быстро надоедает приветственное окно. Убрать его можно добавив в файл ~/.screenrc строку:

  1. startup_message off

Сделать это быстро можно, выполнив команду:

  1. echo startup_message off >> ~/.screenrc

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