Запуск та основи роботи Screen. Налаштування утиліти screen у Linux Перемикання між screen

Screen - дуже зручна програма, якщо ви часто працюєте в консолі, підключившись до сервера SSH. В такому випадку screenдозволяє тримати в одній консолі кілька різних екранів, зручно перемикаючись між ними.

Установка screen

Для установки потрібно виконати команду

$ sudo apt-get install screen

Після цього потрібно запустити screen:

$ screen

Після запуску ви побачите або запрошення командного рядка, або «екран привітання», натиснувши SPACE або ENTER в якому ви так само потрапите в shell. При цьому всі команди будуть запущені вже усередині screen'у.

Якщо потрібно слухати log-файл постійно та виводити їх на екран. Створимо нову консоль screen так:

Screen -d -m -S tail-log tail -f /var/log/nginx/error.log

Для того, щоб вийти зі screen'у (вийти, а не від'єднатися) достатньо вийти з усіх відкритих у ньому оболонок, або ж натиснути комбінацію клавіш Ctrl+A, і відповісти «y» на запитання «чи ви хочете вийти».

Від'єднатися від поточного скрин, не закриваючи і не завершуючи сесії, можна комбінацією Ctrl+A потім d.

Підключення до screen

Якщо на машині вже є запущена screen-сесія, і ви хочете приєднатися до неї, то

  1. якщо сесія одна, досить просто команди: Ctrl+A потім x
  2. якщо сесій кілька, то: подивитися список запущених screen'ів можна командою screen -ls: $ screen -ls 2763.pts-0.debian (Detached) 2743.pts-0.debian (Detached) 2 Sockets in /var/run/screen/S-diesel.

    Вибираємо потрібний нам screen і приєднуємося до нього:

    Screen -x 2762.pts-0.debian

    Назви сесій за замовчуванням малоінформативні - просто номери процесів, якщо є бажання запустити і використовувати кілька screen-сесій для різних завдань, можна придумати назви, що осудніші. Вигадуємо назву, потім запускаємо новий screen ось таким чином:

    $ screen -S "job1"

    де job1 – це назва нашої «іменованої» сесії. Тепер в -ls ми побачимо набагато зрозуміліше:

    $ screen -ls There are screens on: 2762.pts-0.debian (Detached) 2795.job1 (Detached) 2743.pts-0.debian (Detached) 3 Сокети в /var/run/screen/S-diesel.

    і зможемо приєднатися до сесії job1, просто вказавши її ім'я:

    $ screen -x job1

Перемикання між вікнами screen

Як ви вже зрозуміли, сесії зберігаються навіть у той час, коли ви відключені від сервера, і все, що в них запущено, продовжує виконуватися. Втім, на цьому можливості screen'у не вичерпуються. Іноді, під час роботи з ssh, дуже хочеться, щоб було відкрито відразу кілька терміналів. У цьому теж може допомогти screen.

Ctrl+A потім?- вивести всі доступні команди та параметри, для виходу пробілу або Enter
Ctrl+A потім c- create створити вікно screen
Ctrl+A потім p- strongvios перейти до попереднього вікна screen
Ctrl+A потім n- next перейти до наступного вікна screen
Ctrl+A потім d- deatached відключитися від screen залишивши сеанс працюючим
Ctrl+A потім K- kill вбити сеанс screen
Ctrl+A потім x- блокування екрану, для розблокування необхідно ввести пароль Linux.
Ctrl+A потім w- список запущених у скрині вікон
Ctrl+A потім A- підписати назву різним вікнам у скрині
Ctrl+A потім |- Розділити вікна по вертикалі, після Ctrl + A вертикальна риса (не L маленька) або введіть split -v
Ctrl+A потім S- розділити вікна по горизонталі
Ctrl+A потім Tab- Перехід між половинами
Ctrl+A Q- приховати всі вікна та залишити тільки поточне
Ctrl+D- вийти із сеансу screen

Копіювання тексту між вікнами та прокручування екрану

Ctrl+A потім [- переключить screen в Copy mode, у своїй можна переміщатися вікном курсорними клавішами, визначення початку текстового фрагмента тиснемо прогалину. Рухаючи стрілочками курсор, відзначаємо кінець виділення і знову тиснемо пробіл. Все фрагмент скопійований. Вставляється він у це чи інше вікно натисканням ] .

Щоб вийти з цього режиму, просто натисніть Esc.

Моніторинг виконання команди

Якщо відкрито кілька вікон, корисною може бути можливість стежити за активністю в одному з них. Наприклад, якщо ви запустили команду та цікаво дізнатися, коли вона завершиться. Переходимо у вікно з цією командою, тиснемо

Ctrl+A потім m- та включаємо моніторинг активності вікна. Тепер якщо текст вікна зміниться, то screen подасть звуковий сигнал, у списку вікон біля його імені буде відображено символ @, а внизу вікна на кілька секунд з'явиться напис Активність у вікні № ...!

Ведення лога та принт-скрин

Також можна вести трасування всього тексту, що видається у вікно у особливий файл screenlog. де N – номер вікна.

Ctrl+A потім H

Тепер усі результати вашої роботи логуватимуться і можна переглянути історію не лише введення, а й висновку.

Також команда для зняття поточного вікна

Ctrl+A потім h

передає у файл hardcopy. тільки вміст поточного вікна, а не моніторить введення-виведення постійно. Аналог принт-скрин.

Конфігурація screen

Конфігурується screen за допомогою файлу ~/.screenrc у вашому домашньому каталозі. Наприклад, можна написати туди:

Caption always "%(= 45)%(+b w)Screen: %n | %h %=%t %c" hardstatus alslastline "%-Lw%(= BW)%50>%n%f* %t%( -)%+Lw%<"

Це дасть вам весь час видимий список відкритих вікон та іншу корисну інформацію внизу екрана.

Також при запуску Screen за замовчуванням виконуються команди із файлу /etc/screenrc та файла.screenrc з домашнього каталогу користувача. Багато команд, які можна використовувати у файлах конфігурації, були розглянуті в таблицях вище в полі «Текстова команда». Нижче наведено приклад конфігурації Screen з файлу.screenrc:

# Вимкнути виведення ліцензійної інформації при старті Screen startup_message off # Відкрити оболонку для роботи chdir screen -t Work # Відкрити оболонку для керування конфігурацією chdir /etc screen -t Configuration # Відкрити оболонку для перегляду логів chdir /var/log screen -t Logs # Вибрати перше віконце після старту select 0

Цей досить простий конфігураційний файл відкриває три вікна з іменами Work, Configuration, Logs, відповідно в особистому каталозі користувача, в каталозі /etc і каталозі /var/log . Після запуску на екрані буде перше вікно під назвою Work. На малюнку 1 представлений приклад роботи Screen із цим файлом конфігурації.

Завершення Screen

Якщо з якоїсь причини сесія screen перестає відповідати, її можна завершити. Для цього потрібно підключитись до потрібної сесії, потім натиснути Ctrl + A та ввести команду «:quit».

Понад рік однокласник підбивав мене почати використовувати screen під час роботи. Минав час, у мене все ніяк не доходили до цього руки. А даремно…

Screen - це повноекранний віконний менеджер, що дозволяє з одного термінального сеансу працювати відразу з кількома вікнами. Іншими словами, підключившись до віддаленої машини по ssh, ви зможете працювати відразу з кількома його вікнами всередині однієї сесії подібно до натискання ctrl+alt+f1, ctrl+alt+f2… У програми є одна важлива особливість: при обриві зв'язку або відключенні від «скрину» процеси, у ньому запущені не зупиняються і до них можна повернутися будь-якої миті. Цьому можна визначити масу застосувань. Наприклад, працюючи з віддаленим сервером можна бути впевненим у тому, що запущене компілювання програми дійде до кінця, навіть якщо раптом обірветься зв'язок.

Встановлення

Встановлюється програма як зазвичай, наприклад, в Ubuntu так:

apt-get install screen

Варто також помітити, що в моїй Ubuntu 10.04 Desktop цей пакет вже був у системі.

Використання Screen

Запуск програми:

Після запуску програми буде показано коротку інформацію про неї. Для того, щоб прибрати її, натискаємо enter або пробіл. Ви можете подумати, що нічого не сталося, але це не так: ви всередині терміналу, запущеного в screen. Після цього ми бачимо звичну консоль.

Для подачі команд screen використовується поєднання клавіш ctrl+a. Нижче наведено список основних команд, що служать для управління оболонкою:

  • c — створення нового вікна
  • n — перемикання до наступного вікна
  • p — перемикання до попереднього вікна
  • k - закриття вікна
  • d - відключення від скрина
  • » - Список запущених у скрині вікон

Наприклад, для створення нового вікна потрібно натиснути ctrl+a та натиснути клавішу c.

При відключенні від скрина всі вікна та процеси, запущені в них, продовжують виконуватися. Для перегляду запущених скринів використовується команда:

Висновок команди буде приблизно таким:

There are screens on:
18388.pts-4.asid-ubuntu-vm (23.09.2010 05:05:30) (Detached)
18272.pts-0.asid-ubuntu-vm (23.09.2010 04:54:23) (Detached)
2 Sockets in /var/run/screen/S-root.

Для того, щоб підключитися до запущеного скрин, виконуємо команду screen -r . Наприклад, так:

screen -r 18388.pts-4.asid-ubuntu-vm

або коротше:

Якщо ви забули відключитися від скрина з іншої машини (у виводі screen -ls поруч із ним буде напис atached), перехопити його можна за допомогою параметра -rd:

screen -rd 18388

Для підключення до останнього скрин можна просто:

Ну от, начебто, і все. Докладніше про ці та інші команди, як завжди, у мані.

Screen – це консольна програма, що дозволяє використовувати кілька термінальних сесій в одному вікні. Програма діє в рамках сесії оболонки і виступає як контейнер і менеджер для інших термінальних сесій, подібно до того, як менеджер вікон управляє вікнами.

У багатьох випадках створення кількох термінальних вікон неможливо. Можливо, доведеться керувати кількома сесіями консолі, не запускаючи сервер X; може бути потрібний швидкий доступ до кількох віддалених хмарних серверів або виведення на монітор працюючої програми під час роботи над якимось іншим завданням. Всі ці потреби легко задовольнити консолі Screen.

Встановлення

Цей посібник використовує Ubuntu 12.04; на кожному сучасному дистрибутиві всі команди, крім установки, будуть такими самими.

Щоб встановити консоль на Ubuntu, використовуйте команду apt-get:

sudo apt-get update
sudo apt-get install screen

Основи використання

Щоб розпочати сесію screen, просто викличте команду «screen»:

screen
Screen version 4.00.03jw4 (FAU) 2-May-06
Copyright (c) 1993-2002 Juergen Weigert, Michael Schroeder
Copyright (c) 1987 Oliver Laumann
Цей program is free software; Ви можете відновити це і/або змінити його під
the terms of the GNU General Public License як published by the Free Software
Foundation; either version 2, or (at your option) any later version.
Цей program is distributed in hope that it will be useful, but WITHOUT
ANY WARRANTY; без будь-яких іmplied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. Відомості про GNU General Public License for more details.
Ваша особа повинна бути отримана з GNU General Public License along with
this program (see the file COPYING); if not, write до Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Send bugreports, fixes, enhancements, t-shirts, money, beer & pizza to
[email protected]

Під час запуску з'явиться сторінка ліцензування. Щоб продовжити, натисніть «Return» або «Enter».

Подальші дії програми можуть бути несподіваними. Надається звичайний командний рядок і, здається, нічого не відбувається. Може, трапилася помилка роботи screen? Щоб дізнатися про це, використовуйте швидке поєднання клавіш. Натисніть та утримуйте клавішу керування (Ctrl), натисніть «а», потім клавішу «v»:

Ця дія запитує у Screen інформацію про версію; виведений результат свідчить у тому, що консоль працює.

Тепер потрібно ознайомитись із керуванням консоллю. Screen керується переважно за допомогою клавішних комбінацій швидкого виклику. Кожна така комбінація повинна передувати «Ctrl-a» (затисніть клавішу «Ctrl» перед натисканням «а»). Така послідовність натискання клавіш говорить Screen звернути увагу на такі клавіші.

Цей принцип вже використовувався при запиті інформації про Screen. Використовуйте його ще раз, щоб отримати ще трохи корисної інформації.

Ctrl-a?
Screen key bindings, page 1 of 2.
Command key: ^A Literal ^A: a
break ^B b license , removebuf =
clear C lockscreen ^X x reset Z
colon: log H screen ^C c
copy ^[ [ login L select "
detach ^D d meta a silence _
digraph ^V monitor M split S
displays * next ^@ ^N sp n suspend ^Z z
dumptermcap. number N time ^T t
fit F only Q title A
flow ^F f other ^A vbell ^G
focus ^I pow_break B version v
hardcopy h pow_detach D width W
help? prev ^H ^P p ^? windows ^W w
history ( ) quit \ wrap ^R r
info i readbuf< writebuf >
kill K k redisplay ^L l xoff ^S s
lastmsg ^M m remove X xon ^Q q

Це список внутрішніх гарячих клавіш. Варто запам'ятати команду його виклику, оскільки це чудовий спосіб швидко отримати довідку. Як видно внизу файлу, щоб отримати більше команд, необхідно натиснути пропуск.

Тепер викличте команду «top», яка надає інформацію про процеси.

top
top - 16:08:07 1:44, 1 користувача, load average: 0.00, 0.01, 0.05
Tasks: 58 total, 1 running, 57 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 507620k total, 262920k used, 244700k free, 8720k buffers
Swap: 0k total, 0k used, 0k free, 224584k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 3384 1836 1288 S 0.0 0.4 0:00.70 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.11 ksoftirqd/0
5 root 20 0 0 0 0 S 0.0 0.0 0:00.12 kworker/u:0
6 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
7 root RT 0 0 0 0 S 0.0 0.0 0:00.07 watchdog/0
8 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 cpuset
9 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 khelper
10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs
11 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns
12 root 20 0 0 0 0 S 0.0 0.0 0:00.03 sync_supers
13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 bdi-default
14 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kintegrityd
15 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kblockd
16 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 ata_sff
17 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khubd
18 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 md

Тепер можна переглянути процеси на VPS. Але які команди використовувати, щоб отримати докладнішу інформацію про запущені програми? Можна не виходити з команди top, а просто створити нове вікно для запуску цих команд.

Послідовність "Ctrl-a c" створює нове вікно. Тепер можна запустити будь-яку команду, не порушуючи запущених у іншому вікні команд (у разі це моніторинг процесів).

Куди зникло це інше вікно? До нього можна повернутися за допомогою команди:

Ця послідовність виводить наступне запущене вікно. Список вікон циклічно замкнутий, тому якщо за поточним вікном немає інших вікон, вона повертає перше вікно.

Ця послідовність перемикає вікна в зворотному порядку. Якщо, наприклад, запущено три вікна, і третє є поточним, команда виведе друге вікно.

При постійному перемиканні між двома вікнами корисно використовувати наступне поєднання клавіш:

Дана послідовність переводить користувача в вікно, що найчастіше відвідувається. У попередньому прикладі вона знову вивела б третє вікно.

Наразі відстеження всіх створених вікон може здатися неможливим. На щастя, консоль Screen надає кілька способів керування різними сесіями. Для початку створіть три нові вікна (всього вийде 4 вікна), а потім використовуйте один із найпростіших інструментів керування вікнами - "Ctrl-a w".

Ctrl-a c
Ctrl-a c
Ctrl-a c
Ctrl-a w
0$ bash 1$ bash 2-$ bash 3*$ bash

Ця команда надає корисну інформацію – список відкритих вікон. У цьому випадку відкрито 4 вікна. Кожне вікно має свій номер, починаючи з 0. Зірочка поруч із номером вказує на поточне вікно.

Як можна бачити, на даний момент вікно №3 є поточним (по суті воно четверте, так як нумерація починається з 0). Як швидко перейти на вікно №1?

Порядковий номер можна використовувати для прямого переходу до потрібного вікна. Знову відкрийте список вікон:

Ctrl-a w
0$ bash 1*$ bash 2$ bash 3-$ bash

Як можна бачити, тепер є вікно №1. Спробуйте інший спосіб перемикання між вікнами.

Ctrl-a “
Num Name Flags
0 bash $
1 bash $
2 bash $
3 bash $

На цей раз виведено навігаційне меню. Тепер можна переміщатися за допомогою стрілок вгору і вниз або клавіш «j» і «k», як це робиться в текстовому редакторі vi. Перейти на вибране вікно можна, натиснувши кнопку «Return» або «Enter».

Це досить корисно, але зараз усі вікна називаються «bash». Це не дуже зручно. Тепер треба дати назву сесії. Перейдіть на вікно, яке потрібно назвати, і використовуйте послідовність «Ctrl-a A».

Ctrl-a 0
Ctrl-a A
Set window"s title to: bash

За допомогою цієї послідовності можна дати сесії назву. За допомогою клавіші backspace зітріть bash і введіть будь-яке нове ім'я. Наприклад назвіть вікно №0 «monitoring» і запустіть у ньому команду «top».

Set window"s title to: monitoring
Ctrl-a “
Num Name Flags
0 monitoring $
1 bash $
2 bash $
3 bash $

Вікно №0 має зручніше ім'я.

Тепер можна створювати та перейменовувати вікна; але як позбутися непотрібного вікна?

Використовуйте послідовність "Ctrl-a k", що означає "kill":

Ctrl-a k
Really kill this window

Управління сесіями Screen

Щоб вийти зі Screen та закрити всі вікна, використовуйте наступну послідовність команд:

Ctrl-a \
Really quit and kill all your windows

Це завершить сесію Screen. Усі створені вікна, а також уся незавершена робота буде втрачено.

Використання Screen має одну величезну перевагу. Сесію можна не видаляти, а просто зняти. Зняття сесії дозволяє програмам, запущеним у Screen, продовжувати роботу, а також дає доступ до сесії основної консолі (тої, з якої починається робота зі Screen). Ця сесія Screen все ще існує, просто вона керується у фоновому режимі.

Ctrl-a d

Отже, сесію знято. Як повернутися в цю сесію?

Прапор "-r" означає "reattach", або "відновити". Але якщо існує кілька сесій Screen? Що якщо сесія Screen була створена та знята, а потім створена нова сесія, яка також була знята?

screen
Ctrl-a d
screen
Ctrl-a d

Як сказати Screen, яку сесію потрібно поновити?

screen –ls
There are screens on:
2171.pts-0.Blank (07/01/2013 05:00:39 PM) (Detached)
1835.pts-0.Blank (07/01/2013 3:50:43 PM) (Detached)
2 Sockets in /var/run/screen/S-justin.

Наразі виведено список сесій. Щоб відновити другу сесію, введіть її ідентифікаційний номер після прапора "-r".

screen –r 1835

Що якщо потрібно відновити сесію на двох віддалених комп'ютерахчи термінальних вікнах? Використовуйте прапор «-x», щоб розділити сесію.

Управління терміналами у Screen

Існує ряд команд, що дозволяє керувати сесіями терміналів, запущених у Screen.

Щоб скопіювати текст, використовуйте послідовність:

Ця послідовність надає курсор, який можна пересувати за допомогою клавіш зі стрілками або клавіш «h», «j», «k», «l» (як у vi). Переведіть курсор на початок фрагмента тексту, який потрібно скопіювати, та натисніть «Return» або «Enter». Потім переведіть курсор у кінець фрагмента і натисніть «Return» або «Enter». Текст буде скопійовано до буфера обміну.

Слід запам'ятати, що це також механізм прокручування цієї консолі. При необхідності переглянути текст, що знаходиться поза екраном, введіть «Ctrl-a [» і скористайтеся прокручуванням вгору.

Можна вставити скопійований текст за допомогою квадратної дужки, що закриває.

Також може знадобитись переглянути програми, запущені в іншому screen-вікні.

Наприклад, будь-які дані компілюються в одному вікні і потрібно дізнатися, коли процедура завершена. Можна сказати Screen відстежувати бездіяльність цього вікна за допомогою послідовності "Ctrl-a _", яка повідомить, якщо дані перестануть виводитися протягом 30 секунд.

Наведемо простіший приклад. Скажіть консолі Screen повідомити, коли вікно завершить пінг Google 4 рази.

ping –c 4 www.google.com
Ctrl-a _
На window is now being monitored for 30 sec. silence.

Тепер можна працювати в іншому вікні та чекати повідомлення про завершення завдання у попередньому вікні.

Ctrl-a 1
Window 2: silence for 30 seconds

Можна також, навпаки, вимагати повідомлення про активність певного вікна. Це робиться за допомогою послідовності "Ctrl-a M".

sleep 20 && echo “output”
Ctrl-a M
Window 2 (bash) is now being monitored for all activity.

Тепер з'явиться повідомлення під час виведення даних у цьому вікні.

Ctrl-a 1
Activity in window 2

Наприклад, необхідно внести ряд важливих змін, і при цьому потрібно отримати журнал запущених команд. Сесію можна записати за допомогою:

Ctrl-a H
Creating logfile "screenlog.1".

Області Screen

При необхідності бачити кілька вікон відразу можна використовувати так звані «області». Нові області створюються під час розділення поточної області. Щоб розділити поточну область по горизонталі, можна ввести:

Це пересуне поточне вікно у верхню частину екрана та відкриє нову порожню область під ним. Щоб перейти до нижньої області, використовуйте «tab»:

Тепер у нижній області можна створити нове вікно або перейти в інше вікно у звичайному порядку.

За необхідності знищити поточну область використовуйте таку послідовність:

Це видаляє область, не знищуючи поточне вікно. Тобто, якщо в цій галузі була запущена команда, то отримати доступ до неї як до звичайного вікна все ще можна просто окрему область знищено.

При необхідності зробити вертикальний розділ можна використовувати послідовність:

Примітка: це не символ 1 (одиниці) або L. Це символ вертикальної риси, який на більшості клавіатур знаходиться на одній клавіші із символом \. Засоби керування вертикальними областями збігаються з керуванням горизонтальними. При необхідності видалити кілька різних областей і повернутися до однієї області, можна використовувати цю послідовність, яка руйнує всі області, крім поточної:

Використання Byobu

Значним покращенням для Screen є програма під назвою «byobu». Вона діє як оболонка Screen та надає підвищену зручність користування. В Ubuntu її можна встановити за допомогою:

sudo apt-get install byobu

Перш ніж почати, потрібно сказати byobu використовувати screen як вихідний буфер. Це можна зробити за допомогою команди:

byobu-select-backend
Select the byobu backend:
1. tmux
2. screen
Choose 1-2:

Тут можна встановити screen як менеджер терміналу за умовчанням.

Тепер можна ввести "byobu" замість "screen", щоб розпочати сесію.

byobu
Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-24-virtual i686)
* Documentation: https://help.ubuntu.com/
Welcome to the light, powerful, text window manager, Byobu.
Ви можете записати launch of Byobu at login with:
"byobu-disable" та "byobu-enable"
Для tips, tricks, and more information, see:
* http://bit.ly/byobu-help
[email protected]:~$
u? 12.04 0: * 118! 3h55m 2.00 2.0GHz 496M6% 2013-07-01 18:19:21

Як можна бачити, тепер screen укладено в зручний інтерфейс.

Вперше набравши "Ctrl-a", потрібно сказати byobu розпізнавати цю команду як команду screen, а не Emacs.

Ctrl-a
Configure Byobu's ctrl-a behavior...
Якщо ви напишете Ctrl-a в Byobu, вам потрібно буде працювати в:
(1) Screen mode (GNU Screen"s default escape sequence)
(2) Emacs mode (go to beginning of line)
Note that:
- F12 also operates as an escape in Byobu
- You can press F9 and choose your escape character
- Ви можете керувати "byobu-ctrl-a" в будь-який час до зміни свого вибору
Select :

Виберіть 1, щоб використовувати byobu у звичайному режимі.

Інтерфейс надає багато корисної інформації, як, наприклад, список вікон та інформацію про систему. В Ubuntu він навіть повідомляє, скільки пакетів має оновлення безпеки у вигляді номера з наступним знаком оклику на червоному тлі.

Єдина відмінність між byobu і screen в тому, що byobu керує сесіями. Якщо після відключення просто знову набрати «byobu», вона відновить попередню сесію замість створення нової.

Щоб створити нову сесію, потрібно набрати:

byobu –S sessionname

Змініть "sessionname" (ім'я сесії) на власний розсуд, щоб викликати нову сесію. Список поточних сесій можна переглянути за допомогою:

byobu –ls
There are screens on:
22961.new (07/01/2013 06:42:52 PM) (Detached)
22281.byobu (07/01/2013 06:37:18 PM) (Detached)
2 Sockets in /var/run/screen/S-root.

Якщо існує кілька сесій, то після введення «byobu» з'явиться меню, в якому можна вибрати, до якої сесії потрібно підключитися.

byobu
Byobu sessions...
1. screen: 22961.new (07/01/2013 06:42:52 PM) (Detached)
2. screen: 22281.byobu (07/01/2013 6:37:18 PM) (Detached)
3. Create a new Byobu session (screen)
4. Run a shell без Byobu (/bin/bash)
Choose 1-4:

Можна вибрати будь-яку з існуючих сесій, створити нову сесію byobu, або навіть нову оболонку, яка не використовує byobu.

Одна з дуже корисних для віддаленого хмарного сервера функцій – можливість запускати byobu автоматично при кожному підключенні до сесії. Це означає, що при відключенні сесії робота не буде втрачена, і можна буде легко підключитися до цієї сесії знову.

Щоб активувати автоматичний запуск при кожному вході, введіть у термінал:

byobu-enable
The Byobu window manager will be launched автоматично на їх text login.
To disable this behavior later, just run:
byobu-disable
Press to continue...

Як зазначено вище, щоб вимкнути цю функцію, просто введіть:

Тоді вона не запускатиметься автоматично.

Tags: ,

S creen є дуже корисною командою, яка пропонує можливість використовувати кілька вікон оболонки (сеансів) від одного . Коли сеанс від'єднано або є порушення мережі, процес, який запускається в сеансі екрана, як і раніше, буде працювати, і ви можете повторно підключитися до сесії екрана в будь-який час. Це також дуже зручно, якщо ви хочете запустити тривалий процес постійно або підключитись до оболонки сеансів з декількох місць.

У цій статті ми покажемо основи встановлення та використання екрану на .

Як встановити екран

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

Screen -v Screen version 4.00.03 (FAU)

Якщо у вас немає екрана до VPS, ви можете легко встановити його за допомогою менеджера пакетів, що надається з операційною системою.

/RedHat/Fedora

yum -y install screen

/

apt-get -y install screen

Як розпочати сеанс екрану

Ви можете почати екран, набравши слово “screen” у командному рядку і новий сеанс екран буде запущений, який виглядає так само, як у командному рядку

Це хороша практика, щоб почати заняття екрана з описовими іменами, так що ви можете легко згадати, який процес виконується під час сеансу. Щоб створити новий сеанс із ім'ям сеансу, виконайте таку команду

Screen -S name

та замінити ‘ name' зі зрозумілою назвою для вашої сесії.

Від'єднати екран від сесії

Для того, щоб вимкнутись від поточного сеансу екрану, ви можете натиснути клавішу ‘ Ctrl-A' і ' D' на клавіатурі. Усі сеанси екрана будуть активні, і ви можете повторно приєднатися до них у будь-який час пізніше.

Знову на екран сесії

Якщо ви відірвані від сеансу або з'єднання переривається з якоїсь причини, ви можете легко повторно приєднатися, виконавши таку команду:

Screen -r

Якщо у вас є кілька сеансів екрану, ви можете перерахувати їх з ‘ ‘

Screen -ls There are screens on: 7880.session (Detached) 7934.session2 (Detached) 7907.session1 (Detached) 3 Зображення в /var/run/screen/S-root.

У нашому прикладі, у нас є три активні сеанси екрану. Отже, якщо ви бажаєте відновити сеанс “session2”, ви можете виконати

Screen -r 7934

або ви можете використовувати ім'я екрану

Screen -r -S session2

Завершити сеанс екрану

Є кілька способів завершити сеанс екрану. Ви можете зробити це, натиснувши ‘ Ctrl‘ + ‘ D' на клавіатурі або за допомогою команди командного рядка ' exit‘.

Для того, щоб побачити всі корисні властивості екрана команди, ви можете перевірити man page screen.

Man screen NAME screen - screen manager with VT100/ANSI terminal emulation SYNOPSIS screen [ -options ] [ cmd [ args ] ] screen -r ] screen -r sessionowner/]

Ви залогінилися на ваш віддалений сервер через ssh, радісно стукаєте по клавіатурі, роблячи свої якісь адмінські справи та опа! Символи перестали друкуватися і вивалилося те повідомлення, яке, часом, викликає непереборне бажання розбити клавіатуру. Connection closed. Знайома ситуація? Так-так, ваша сесія щойно аварійно обірвалася і все доведеться робити заново ... Цього можна уникнути, якщо використовувати screen. Він не тільки дозволить зберегти вашу сесію в цілості та безпеці, але ще й дозволить тримати відкритими кілька сесій в одному віконці терміналу

Що таке screen?
Спочатку подивимося man-сторінку: "Screen - це повноекранний віконний менеджер, який дозволяє розділити фізичний термінал між кількома незалежними процесами (зазвичай інтерактивними хмарами)".
У screen є кілька відмінних рис, які можуть сильно допомогти при виконанні завдань на віддалених серверах через ssh. Я розповім про три найчастіше використовувані мною фічі: багатовіконність, логування і сесії. За докладнішими деталями доведеться звернутися до man-сторінки.

Установка screen
Швидше за все, screen вже є у вашій системі. Перевірити це можна командою

Якщо хто не дав результатів, то встановіть screen за допомогою пакетного менеджеравашої системи. На моїх серверах, в основному, CentOS та Debian, тому я ставлю screen так:

# yum install screen (для CentOS)
# apt-get install screen (для Debian)

Потрапляється і FreeBSD, у цьому випадку я використовую порти:

# cd /usr/ports/sysutils/screen
make install clean

Використання screen
Screen запускається з командного рядка так само, як і будь-яка програма:)

Ви можете отримати повідомлення про те, що screen запущено, а можете і не отримати… Залежить від вашої системи. Якщо ви не отримали повідомлення, ви можете подумати, що нічого не сталося. Однак, це не так. Ви вжевсередині терміналу, запущеного у screen. Це нормальний повнофункціональний шелл, крім кількох спеціальних команд. Screen використовує клавіатурну комбінацію Ctrl+A для подачі команд терміналам у собі. Спробуйте натиснути Ctrl+A, а потім?
Ви побачите приблизно таке:

Screen key bindings, page 1 of 2.

Command key: ^A Literal ^A: a

break ^B b lockscreen ^X x reset Z
clear C log H screen ^C c
colon: login L select ” ‘
copy ^[ [ meta a silence _
detach ^D d monitor M split S
digraph ^V next ^@ ^N sp n suspend ^Z z
displays * number N time ^T t
fit F only Q title A
flow ^F f other ^A vbell ^G
focus ^I pow_break B version v
help? pow_detach D width W
history ( ) prev ^P p ^? windows ^W w
info i readbuf< wrap ^R r
kill K redisplay ^L l writebuf >
lastmsg ^M m remove X xoff ^S s
license , removebuf = xon ^Q q

Screen приймає командні клавіатурні комбінації після натискання Ctrl+A. Ви можете змінити цю поведінку за допомогою конфіг-файлу $HOME/.screenrc

Багатовіконність
Screen, як і більшість віконних менеджерів, підтримує роботу з кількома вікнами Це дуже зручно для виконання паралельних завдань без відкриття нових ssh-сесій. Наприклад, у мене постійно відкрито чотири чи п'ять сесій із кількома завданнями у кожній. Раніше мені довелося б відкрити близько 15 терміналів, логінів, сесій.. Втомлено, чи не так? Ці незручності повністю вирішує screen. Тепер я можу обійтися одним терміналом.

Нове вікно відкривається комбінацією клавіш "Ctrl+a c". Після натискання ви побачите новий термінал із вашим запрошенням у тому ж вікні. При цьому попередні вікна також продовжують працювати. Спробуємо: запустіть screen і в ньому top

Mem: 506028K av, 500596K, 5432K free,
0K shrd, 11752K buff
393660K cached


6538 root 25 0 1892 1892 596 R 49.1 0.3
6614 root 16 0 1544 1544 668 S 28.3 0.3
7198 admin 15 0 1108 1104 828 R 5.6 0.2

Відкрийте нове вікно, натиснувши “Ctrl+a c”

Поверніться назад, натиснувши Ctrl+a n

Mem: 506028K av, 500588K, 5440K free,
0K shrd, 11960K buff
Swap: 1020116K av, 53320K, 966796K free
392220K cached

PID USER PRI NI SIZE RSS SHARE STAT %CPU %ME
6538 root 25 0 1892 1892 596 R 48.3 0.3
6614 root 15 0 1544 1544 668 S 30.7 0.3

top залишився у колишньому стані. Ви можете створити кілька вікон і перемикатися між ними, використовуючи Ctrl+a n для перемикання на наступне вікно та Ctrl+a p для перемикання на попереднє. У цьому кожен запущений процес залишиться у робочому стані.

Відключаємось від screen
Є два способи відключитися від screen: перший - це просто розлогитися. Ви можете використовувати комбінацію клавіатури Ctrl+a K або просто набрати exit. Цей спосіб "вб'є" поточне вікно, якщо у вас їх кілька або зовсім зупинить screen.
Другий спосіб полягає в від'єднанні. Цей спосіб залишає поточний процес запущеним та просто відключає вас від терміналу. Наприклад, якщо ви через ssh-сесію запускаєте якийсь дуже тривалий процес, який не вимагає вашої уваги, то ви можете просто відключитися від screen за допомогою Ctrl+a d. Це поверне вас назад у вихідну оболонку. Всі процеси, запущені в screen, залишаються працюючими і ви можете підключитися до них пізніше.

Підключення до сесії
Ви компілюєте велику програму на віддаленому серверіза допомогою screen. І звичайно ж, за законами Мерфі, з'єднання обривається з незалежних від вас причин. Не варто впадати в паніку, screen все зберіг:) Просто з'єднайтеся з сервером ще раз і подивіться запущені під screen процеси за допомогою

# screen -ls
There are screens on:
31619.ttyp2.server (Detached)
4731.ttyp2.server (Detached)
2 Sockets в /tmp/screens/S-root.

У цьому прикладі запущено дві screen-сесії. Для підключення до потрібної з них використовуйте команду

#screen -r 31619.ttyp2.server

Просто використовуйте screen з прапором r та ім'ям сесії для повторного підключення. Це дуже зручно. Можна, наприклад, запустити якийсь тривалий процес на роботі та, повернувшись додому, продовжити контроль за його виконанням.

Логування
Мені здається дуже важливим часом зберігати повний лог своїх дій. Luckily, screen легко з цим справляється. Просто активуйте логування натисканням Ctrl + H. Screen буде продовжувати логування протягом всього процесу роботи. Буває дуже корисно повернутись назад і подивитися порядок необхідних дій.

І ще трохи…
Screen може вести моніторинг активності вікна. Якщо ви качаєте щось велике, компілюєте програму або просто виконуєте тривалий процес, ви можете довго спостерігати порожній термінал без ознак активності. А процес тим часом продовжує виконуватися. Або, навпаки, дивитися на потік налагоджувальної інформації, очікуючи на закінчення процесу. Для початку стеження перейдіть в термінал, який ви хочете спостерігати і натисніть Ctrl+a M для стеження за активністю (спрацює з появою нової інформації) або Ctrl+a _ для стеження за бездіяльністю (спрацює при припиненні надходження інформації до терміналу). Потім ви можете спокійно перейти в інше вікно або створити нове. При настанні події screen попередить вас про це повідомлення з номером вікна в заголовку терміналу. Для швидкого перемикання цього вікна використовуйте Ctrl+a ” (це символ лапки). Ви побачите список всіх активних вікон на даний момент. Для переходу до потрібного можна використовувати стрілки або просто набрати номер потрібного вікна. Для припинення спостереження перейдіть у потрібне вікно та скасуйте моніторинг тією самою командою. Наприклад, для припинення спостереження за активністю натисніть Ctrl+a M

mob_info