В данной статье речь пойдет о полезной утилите — 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
Лучше про работу в одном скрине рассказать.
Что можно заваять 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…