Screen – эффективное управление процессами в Терминале

Стандартный

pi@raspberrypi: ~_006

В данной статье речь пойдет о полезной утилите – screen. Для чего она служит и в чем ее эффективность? Она может быть очень полезна, если вы удаленно управляете своим или другим компьютером, для управления сервером и т.д. К примеру вы по ssh соединились к удаленному компьютеру и решили запустить консольный торрент-клиент rTorrent. Без помощи screen, окно Терминала будет занято процессом rTorrent и вы больше ничего не сможете делать. Чтобы запустить другое приложение или процесс, вам будет нужно запускать еще и одно или несколько окон Терминала. А вот если использовать screen, то вы сможете управлять в одном окне Терминала множеством процессов, переключаясь между ними. Удобно, не правда ли?

Если опять вернуться к вышеупомянутой программе rTorrent, то она работает исключительно через окно Терминала и свернуть ее в фон не получится, можно только выйти. А вот в связке со screen все работает на “Отлично”. Если программа не установлена, то установим ее командой:

sudo apt-get install screen

Чтобы запустить утилиту нужно выполнить команду:

screen



В таком варианте, без параметров, утилита создает новый скрин (экран) и откроет сессию командной оболочки. Чтобы проверить его работу, запустите в окне Терминала утилиту Top:

top

В итоге вы увидите консольную программу-мониторинг, которая показывает полезную информацию о процессах системы, загрузке процессора, памяти и т.д. Теперь, чтобы свернуть скрин с запущенной Top, нужно нажать комбинацию клавиш – Ctrl+A, после чего нужно нажать D. Вот в принципе и все, что нужно запомнить. Комбинация Ctrl+A даст команду screen для перевода в командный режим, а клавиша D свернет текущий экран. Теперь, чтобы снова вернуть свернутый экран консоли, нужно выполнить команду:

screen -r

Параметр -r служит для сигнализации утилите, что нужно открыть свернутый скрин. Теперь завершим работу Top, нажав клавишу q. Чтобы выйти из утилиты screen нужно выполнить:

exit

Вы должны увидеть предупреждение, что программа завершает свою работу – [screen is terminating]

Теперь давайте запустим консольный торрент-клиент rTorrent. Делается это командой:

screen rtorrent

Но эти варианты запуска нужных программ через screen эффективны только для запуска одного какого-нибудь приложения.Далее рассмотрим вариант запуска двух и более процессов. Для более эффективной работы с запущенными скринами, рекомендуется присваивать им имена. Поясню. Например вы создаете скрин с запущенной утилитой Top. В таком случае команда будет иметь вид:

screen -S top top

Первая запись top – это имя, присвоенное скрину с запущенной утилитой top, а вторая запись top – это уже сама команда. Параметр -S указывает утилите, что мы создаем имя для нового скрина. Теперь свернем созданный скрин уже знакомой комбинацией Ctrl+A и далее D. Теперь давайте создадим еще один скрин с запущенным консольным плеером MOC:

screen -S moc mocp

Снова свернем его и создадим еще один скрин, в котором запустим файловый менеджер Midnicht Commander:

screen -S mc mc

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

screen -r name_screen

Вместо name_screen нужно указать имя скрина, которое вы ему присвоили. Например:

screen -r moc

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

screen -list

Должны увидеть что-то похожее на:

There are screens on:
7203.mc (22.06.2017 00:35:37) (Detached)
6977.moc (22.06.2017 00:12:33) (Detached)
6955.top (22.06.2017 00:07:50) (Detached)

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

man screen


One Comment

  1. Лучше про работу в одном скрине рассказать.

    Что можно заваять screen.rc
    в нём перечислить все открытые консольные команды,
    такие как tail -F /var/log/syslog
    top
    alsamixer
    rtorrent

    screen -t mc 0 /usr/bin/mc
    screen -t syslog 1 tail -F /var/log/syslog
    screen -t alsamixer 2 alsamixer
    screen -t top 3 top
    screen -t htop 4 htop
    screen -t rtorrent 5 rtorrent
    screen -t bash1 6 /bin/bash
    screen -t bash2 7 /bin/bash
    screen -t bash3 8 /bin/bash
    screen -t bash4 9 /bin/bash

    из полезных опций
    а) caption always “%= %-w%L>%{= BW}%n*%t%{-}%52<%+w %L="
    будет рисовать всегда капчу под окном, понятно где находишься
    б) defscrollback 25000
    увеличивает дефолтный буфер до 25к строк, что бы листать длинные логи
    г) startup_message off
    быстрее стартует
    д) vbell off
    тише будет
    е) verbose on
    лучше видно

    man screen – лучше меня поможет.

    запускаем: screen -c screen.rc

    дальше Ctrl + a + 1/2/3/4/5/6/7/8/9/0 – путишествовать по 10 окнам скрина
    Ctrl + a + space – листать вправо
    Ctrl + a + backspace – листать влево

    сразу 10+ терминалов в одном xterm

    когда это осваиваешь, всякие gnome-shell-ы кажутся смешной погрумушкой, совсем ненужной…

    к тому же xterm+screen есть везде, FreeBsd, OpenBSD, Linux, да вообще любой Unix, и на масдай можно доставить…

    а gnome-shell только там где есть gnome…

Leave a Reply

Статьи