ѕоставка оборудовани€ √аранти€ и помощь с настройкой. —кидка дл€ наших читателей по промокоду WIKIMERIONET  упить
»нтерфейс статистики Merion Mertics показывает ключевые диаграммы и графики по звонкам, а также историю звонков в формате, который легко поймет менеджер ѕопробовать бесплатно
¬недрение
контакт-центра
 онтакт - центр как канал продаж и маркетинговой коммуникации ¬недрить
»нтеграци€ с CRM ѕомогаем навести пор€док с данными
и хранить их в единой экосистеме
ѕодключить
»“ Ѕезопастность ”мна€ информационна€ безопасность дл€ вашего бизнеса «аказать
ћерион Ќетворкс

5 минут чтени€

—ейчас вы точно прочувствуете важное команды screen. Ѕывало ли у вас такое, что вы выполн€ете (очень долго) команду в консоли - CLI на удаленной машине, будучи подключенным через SSH?  оманда долго выполн€етс€ и близитс€ к завершению как вдруг пропадает подключение, рветс€ SSH подключение и все, что вы делали - пропало?

ѕрости, что напомнили. «наем, это болезненно. „то же, вытрем слезы. ƒл€ этих ситуаций есть команда screen о которой мы и поговорим.


Ќемножко теории

“ак называемый screen это терминальный мультиплексор (нас тоже пугает это слово). ƒругими словами, оно дает нам возможность внутри действующей сессии открыть сколько угодно много виртуальных окон/терминалов. „то важно - процесс, запущенный внутри сессии через screen, будет продолжатьс€ даже тогда, когда вы отключитесь от самой первой сессии.


”становка screen в Linux

¬ообще, пакет screen предустановлен на большинстве современных Linux - дистров. ѕроверить можно командой:

screen --version
Screen version 4.00.03 (FAU) 23-Oct-06
screen --version

≈сли случилось так, что у вас его нет - это можно быстро исправить простой установкой.


”становка screen в Ubuntu и Debian

apt install screen

”становка screen в CentOS и Fedora

yum install screen

«апуск screen в Linux

„тобы запустить screen в консоли, просто наберите screen. „то может быть проще, не правда ли?

screen

” вас откроетс€ нова€ сесси€ в новом окне. ”же здесь вы можете вводить все нужные shell команды. Ќаход€сь в режиме скрина (screen) вы можете посмотреть список доступных вам команд управлени€ этим режимом. ¬от так:

Ctrl+a и ?
screen список доступных вам команд
≈сли не получаетс€ нажать указанную выше комбинацию, можно поступить проще: нажмите отдельно Ctrl+a, отпустите, а затем в консоль наберите ? и нажмите Enter

—есси€ screen с именем

Ќу очень удобна€ фича. ≈сли вы делаете несколько процессов параллельно, просто обзовите их так, чтобы потом пон€ть, что и где выполн€етс€. —интаксис такой:

screen -S им€_сесси€_скрин

Ќапример, вы можете запустить ping - замер хоста с 1— и назвать сессию так:

screen -S pings_towards_1C

¬сегда используйте скрин именно так. Ѕудет значительно удобнее.


 ак правильно работать с окнами в Windows

 ак мы уже сказали, когда вы создаете новую screen - сессию, вы создадите новое окно с shell оболочкой внутри. » что интересно - внутри скрин сессии вы можете создать множество дополнительных окон. „тобы это сделать, воспользуйтесь командой (внутри скрина) Ctrl+a и c. Ќовому окну будет назначен номер от 0 до 9 (первый свободный).

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

  • Ctrl+a и c - создать дополнительное окно ;
  • Ctrl+a и " - показать список всех имеющихс€ окон;
  • Ctrl+a и 0 - переключитьс€ на окно с номером 0 (номер может быть иной);
  • Ctrl+a и A - переименовать текущее окно;
  • Ctrl+a и S - разделить окно по горизонтали на две области;
  • Ctrl+a и | - разделить окно по вертикали на две области;
  • Ctrl+a и tab - переключить рабочий фокус на следующую область разделенного окна;
  • Ctrl+a и Ctrl+a - переключить рабочий фокус на предыдущую область разделенного окна;
  • Ctrl+a и Q - закрыть все разделенные области кроме;
  • Ctrl+a и X - закрыть текущую область;

¬ыход из screen сессии

¬ы можете легко выйти из screen - сессии набрав:

Ctrl+a и d

—амое важное: запущенна€ вами в этот момент команда не остановитс€ и будет продолжать свое выполнение.


¬озврат к screen сессии

„тобы вернуть к screen - сессии используйте команду:

screen -r

≈сли у вас запущено больше чем одна screen - сесси€, то после ключа r нужно указать ее ID. ”знать его просто с помощью команды:

screen -ls

¬ывод этой команды будет выгл€деть вот так:

screen -ls
There are screens on:
        32328.pings_towards_1C  (Detached)
        32482.wiki.merionet.ru_is_one_love      (Detached)
2 Sockets in /var/run/screen/S-root.

¬ выводе выше мы выделили ID - сессий. Ќапример, чтобы вернутьс€ к сессии 32328 (pings_towards_1C), дайте команду:

screen -r 32328

Ќемножко кастомизации screen под вас

 огда screen запускаетс€, он считывает свои конфигурационные параметры из /etc/screenrc и ~/.screenrc, если файл присутствует. “ак вот - мы можем легко перенастроить предпочтени€ использовани€ screen и сделать это в файле .screenrc.

ѕосмотрите пример с комментари€ми, как мы закастомили screen дл€ себ€:

# ¬ыключаем приветствие
startup_message off

# включаем визуальный звонок
vbell off

# буфер дл€ сохраненных строк делаем 10000
defscrollback 10000

# кастомим строку состо€ни€
hardstatus alwayslastline
hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %m-%d %{W}%c %{g}]'

“иповой сценарий использовани€ screen

ќбщий случай, так сказать. ќбычно он состоит из следующих шагов:

  1. ѕосле SSH подключени€ к серверу, набираем screen;
  2. «апускаем интересующую нас команду в режиме screen - сессии;
  3. ¬ыполн€ем команду Ctrl + a и d, чтобы выйти из режима работы с экран-сессией
  4. „ерез какое-то врем€ возвращаемс€ к запущенному ранее экрану командой screen -r

¬ыводы

ћы разобрались, как создавать screen сессии, управл€ть ими внутри, открыва€ новые окна, выходить из их режима управлени€ (без прекращени€ выполнени€ команды), делить горизонтально и вертикально экраны.

јх да, ещЄ мы научились кастомизировать screen под себ€. ѕрофит!


ѕолезна ли ¬ам эта стать€?