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

Іноді трапляється неприємність із втраченими вікнами Screen, для того, щоб підключитися до них, потрібно виконати команду:

  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

Управління вікнами

У 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 на клавіатурі.