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

Банер При работе в терминале часто возникает необходимость запускать долговременные задачи, которые нежелательно прерывать при разрыве соединения или закрытии терминала. Также бывает полезно одновременно работать с несколькими процессами или сессиями в одном окне терминала. Для решения этого вопроса можете воспользоваться утилитой Screen.

Screen – консольная утилита, позволяющая в действующей SSH сессии открывать большое количество независимых виртуальных терминалов (окон). Она предоставляет возможность запускать приложения в фоновом режиме, переключаться между разными сессиями, отсоединяться от сессий и подключаться к ним позже, даже после разрыва соединения. Screen широко используется для удаленного управления серверами через SSH, так как позволяет сохранять работающие процессы при разрыве соединения.

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

В ряде Linux дистрибутивов Screen присутствует по умолчанию. Если утилита Screen все же отсутствует в вашем Linux дистрибутиве, Вы можете выполнить установку с помощью следующих команд.

Важно: установку нужно выполнять с уровнем доступа администратора (root). Перейти на уровень администратора можно с помощью su или sudo.

Команда для Ubuntu/Debian:

  1. apt-get install screen

Для CentOS/RHEL:

  1. yum install screen

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

  1. screen

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

Информируем: команды Screen выполняются по горячим клавишам Ctrl + a. Нужно нажать и отпустить Ctrl + a, а затем ввести требуемую команду. Например, для вывода списка всех команд сначала нажмите и отпустите Ctrl + a, а потом введите ?

  • Ctrl + a -> ?

Если не получилось, попробуйте еще раз, соблюдая последовательность нажатий:

  1. Нажмите Ctrl + a
  2. Отпустите Ctrl + a
  3. Введите ?

Таким же образом выполняются и другие команды в Screen. Сначала нажмите и отпустите Ctrl + a, а затем введите нужную команду, например:

  • Ctrl + a -> c – создать новый скрин
  • Ctrl + a -> n – переключиться на следующий скрин
  • Ctrl + a -> : – ввод команды для отправки фоновому процессу

Обратите внимание на использование -> для обозначения последовательности, нажать Ctrl + aввести команду.

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

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

  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:

  1. screen -r

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

  1. screen -x

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

  1. screen -x n

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

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

Можно быстро создать новый скрин с запущенной программой, например, wget большого файла: С помощью ключа -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

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

  • Ctrl + a -> A

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

  1. screen -list

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

  1. screen -x download

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

  • Ctrl + a -> x

Управление окнами

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

Горизонтальное разделение

Для горизонтального разделения окна применяется хоткей:

  • Ctrl + a -> S
Горизонт
Пример горизонтального разделения.

Вертикальное разделение

Для вертикального разделения окна используется следующая комбинация:

  • Ctrl + a -> |

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

  • Ctrl + a -> Tab

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

Закрыть отдельную панель или все панели, кроме текущей, можно так:

  • Ctrl + a -> X – закрыть текущую панель.
  • Ctrl + a -> Q – закрыть все панели, кроме текущей.

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

Вертикаль
Пример вертикального разделения.

Запись вывода в файл

Все, что выводится в окне Screen, можно записать в файл с помощью команды:

  • Ctrl + a -> H

После ввода этой команды Screen запросит имя файла для записи.

Блокировка доступа к Screen

Для блокировки Screen от несанкционированного доступа можно воспользоваться командой:

  • Ctrl + a -> x

После ввода этой команды будет запрошен пароль. Для разблокировки нужно будет ввести тот же пароль.

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