Как выйти из screen linux. Использование screen в Linux. Показать параметры screen

Screen - это полно-экранная программа, которая может быть использована для мультиплексов физической консоли между несколькими процессами (обычно интерактивными оболочками). Она предлагает пользователю открывать несколько отдельных терминалов в одном оконном менеджере терминала.

На моей Ubuntu 10.04 Server Edition, Screen был установлен по умолчанию. Но, в Linux Mint нет Screen по умолчанию, мне нужно сначала установить его, при помощи команды apt-get. Пожалуйста, следите за процессом установки screen вашего дистрибутива.

# apt-get install screen (On Debian based Systems) # yum install screen (On RedHat based Systems)

На самом деле, Screen - очень хорошая команда в Linux, которая скрыта внутри сотни Linux команд. Давайте стартанем, чтобы увидеть функции Screen.

Запускаем Screen первый раз

Просто введите screen в командной строке. Затем появится screen с таким же интерфейсом, как в командной строке.

Pungki@mint ~ $ screen

Показать параметры screen

Войдя в screen, можно выполнять различные действия, как и в нормальной окружающей среде CLI. Но так как screen - это приложение, поэтому оно имеет команды или параметры.

Наберите Ctrl-A и ? . Теперь вы увидите все команды или параметры на экране.

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

Чтобы выйти из этого экрана, нужно нажать на кнопку "пробела " или "Enter ". (Обратите внимание, что все шоткаты, которые используют "Ctrl-A ", используются без кавычек).

Отключить screen

Одним из преимуществ screen есть то, что его можно отключить. Затем вы можете восстановить его, не теряя информации, которую выполняли перед тем. Вот пример скрипта:

Вы находитесь в середине SSH-on на вашем сервере. Давайте предположим, что вы скачиваете 400MB патча для вашей системы с помощью команды wget .

Процесс загрузки займет около двух часов. Если отключить SSH сессию или оборвать связь из-за аварии, то процесс загрузки остановится. Вам придется начать все с начала. Чтобы избежать этого, мы можем использовать screen и отключить его.

Взгляните на эту команду. Во-первых, вы должны войти в screen.

Pungki@mint ~ $ screen

Затем вы можете создать процесс загрузки. Для примера, на моем Linux Mint я апгрейднул мой dpkg пакет с помощью команды apt-get .

Pungki@mint ~ $ sudo apt-get install dpkg

Пример выходных данных

Reading package lists... Done Building dependency tree Reading state information... Done The following packages will be upgraded: dpkg 1 upgraded, 0 newly installed, 0 to remove and 1146 not upgraded. Need to get 2,583 kB of archives. After this operation, 127 kB of additional disk space will be used. Get:1 http://debian.linuxmint.com/latest/ testing/main dpkg i386 1.16.10 47% 14,7 kB/s

" и "d ". Вы ничего не увидите при нажатии этих клавиш. Результат будет выглядеть так:

Pungki@mint ~ $

Снова включить screen

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

Pungki@mint ~ $ screen -r

И вы увидите, что процесс возобновился с того места, где вы его оборвали.

Если у вас есть более чем 1 screen сессии, вам нужно ввести ID screen сессии. Используйте screen -ls, чтобы увидеть, сколько screen имеются.

Pungki@mint ~ $ screen -ls

Пример выходных данных

Pungki@mint ~ $ screen -ls There are screens on: 7849.pts-0.mint (10/06/2013 01:50:45 PM) (Detached) 5561.pts-0.mint (10/06/2013 11:12:05 AM) (Detached) 2 Sockets in /var/run/screen/S-pungki

Если вы хотите, то восстановите screen 7849.pts-0 .mint, затем введите эту команду.

Pungki@mint ~ $ screen -r 7849

Использование нескольких screen

Возможно ли запустить больше, чем 1 screen , чтобы выполнить работу? Да. Вы можете работать с несколькими окнами экрана одновременно. Есть 2 (два) способа сделать это.

Во-первых, вы можете отсоединить первый screen и запустить другой screen на терминале. Во-вторых, вы делаете вложения screen.

Переключение между screen

Когда у вас вложенные экраны, вы можете переключаться между ними с помощью команды "Ctrl-A " и "n ". Это будет переход к следующему экрану. Когда вам нужно вернуться к предыдущему экрану, нажмите "Ctrl-A " и "p ".

Чтобы создать новое окно экрана, просто нажмите "Ctrl-A " и "с ".

Залогинивание, которое вы делаете

Иногда важно, чтобы записать то, что вы сделали в то время, когда находились в консоли. Предположим, вы - администратор Linux, которые управляет множеством Linux серверов.

С залогиниванием экрана вам не нужно записывать каждую команду, которую вы сделали. Для активации Функция регистрации экрана просто нажмите "strong>Ctrl-А" и "H ". (Пожалуйста, будьте осторожны, мы используем большую букву H . Использование маленькой буквы h только создаст скриншот экрана в отдельном файле).

В нижней левой части экрана появится уведомление, которое сообщает: Creating logfile “screenlog.0 “. Вы найдете screenlog.0 файл в вашем домашнем каталоге.

Эта функция будет добавлять все, что вы делаете, когда находитесь в окне экрана. Закройте экран, чтобы залогиниться, нажмите "Ctrl-А " и "Н " еще раз.

Pungki@mint ~ $ screen -L

Еще один способ, чтобы активировать функцию ведения журнала - вы можете добавить параметр "-L ", когда screen запускается первый раз. Команда будет выглядеть следующим образом.

Pungki@mint ~ $ screen -L

Screen блокировки

Screen также шоткат для блокировки экрана. Вы можете нажать "Ctrl-А " и "х " для блокировки экрана. Это удобно, если вы хотите быстро заблокировать экран. Вот пример вывода блокировки экрана после нажатия на шоткаты.

Screen used by Pungki Arianto on mint. Password:

Вы можете использовать свой Linux пароль, чтобы разблокировать его.

Добавить пароль для блокировки screen

В целях безопасности, вы можете поставить пароль на вашу screen сессию. Ввести пароль будет предложено, когда вы хотите повторно приатачить screen. Этот пароль отличается от механизма блокировки экрана выше.

Чтобы защитить ваш экран паролем, вы можете редактировать файл “$HOME/.screenrc ”. Если файла не существует, его можно создать вручную. Синтаксис будет таким.

Password crypt_password

Чтобы создать "crypt_password ", вы можете использовать команду "mkpasswd " на Linux. Вот команда с паролем "pungki123 ".

Pungki@mint ~ $ mkpasswd pungki123 l2BIBzvIeQNOs

mkpasswd будет генерировать пароль, как показано выше. Как только вы получите пароль, вы можете скопировать его в файл ".screenrc " и сохранить. Теперь файл ".screenrc " будет выглядеть так.

Password l2BIBzvIeQNOs

При следующем запуске экрана отключите его, и пароль будет запрашиваться при попытке повторно включить экран, как показано ниже:

Pungki@mint ~ $ screen -r 5741 Screen password:

Введите пароль "pungki123 " и экран подключится снова.

Как только вы запустите запрос пароля экрана и нажмете "Ctrl-А " и "х ", то на выходе будет это.

Screen used by Pungki Arianto on mint. Password: Screen password:

Вам нужно будет ввести пароль два раза . Первый раз - ваш пароль Linux , второй - пароль, который вы положили в файл .screenrc .

Выход из screen

Есть 2 (два) способа выхода из экрана. Первый - мы используем "Ctrl-А " и "d ", чтобы отключить его. Второй - мы можем использовать команду погашения экрана. Вы также можете использовать "Ctrl-А " и "К " чтобы прибить экрана.

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 There are screens on: 2762.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 Sockets in /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 alwayslastline "%-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» .

Иногда приходится работать с *nix серверами удаленно по ssh, в моем случае через putty. Если дисканектит по причине херового интернета, ссесия рвется, то хана всем нашим не завершенным процессам, наработкам в не сохраненных конфигах и.т.д. Что бы предостереч себя от подобных казусов, а так же хранить сессии и в любое время из любого места к ним подключаться я открыл для себя оконный менеджер Screen. Теперь по делу.

Устанавливаем:

#yum install -y screen

Для начала, освоим основные действия для манипуляции с окнами
Открываем любой эмулятор терминала (в моем случае - это putty ) и запускаем в нем Screen :


Это окно - первое окно Screen , которое было создано программой автоматически, при ее запуске. Создадим еще одно окно.
Набираем на клавиатуре следующую комбинацию клавиш (везде без -, - это разделитель):
Ctrl+a c

Запустим в этом окне какой-либо процесс. Пусть это будет top и создаем еще одно окно
Ctrl+a c и запустим в нем какой-либо процесс. На этот раз путь это будет man screen

На данный момент мы имеем в одном окне терминала putty три запущенных окна screen.
Как глянуть сколько окон? как вариант Ctrl+a w

Мы видим в левом верхнем углу окна строку:
0$ bash 1*$ bash 2-$ bash

Это список активных, созданных нами окон screen. 0 , 1 , 2 - это номера окон, а bash - их имена (заголовки). Как видно, нумерация окон начинается с нуля. А вот имена у всех трех одинаковые - bash

Окна:
* 0$ bash - это то, которое Screen сам создал при своем запуске (забегая чуть вперед, можно сказать, что их колличество может быть не одно и выставляется оно в конфигурационном файле);
* 1-$ bash - в этом окне мы запутили top ;
* 2*$ bash - в этом окне у нас запущен man screen .

Переключение производится сочетанием:
Cntrl+ a - p - переключиться на предыдущую вирутальную консоль
Cntrl +a - n или пробел - переключиться на следующую вирутальную консоль
Ctrl+a “ -- интерактивный (в отличие от Ctrl+a – w ) список созданных нами окон. Можно перемещаться по нему стрелками вверх-вниз и входить Enter ‘ом в нужное.


Можно перейти на нужное окно, зная его номер, по команде:
Ctrl +a номер_окна

Например, перейдем на второе окно:
Ctrl+a 1

Или, чуть переиначив команду:
Ctrl+a

В нижней строке появится предложение ввести номер окна, в которое мы хотим перейти. Допустим, нам нужно перейти в первое окно — вводим номер 0 и нажимаем Enter :

Как мы видели из вывода команд Ctrl+a – w и Ctrl+a – “ , имена (заголовки) окон одинаковые. Давайте исправим это. Наберем команду Ctrl+a A

В нижней строке появится приглашение изменить заголовок окна. Исправляем с bash на main и нажимаем Enter. Узнать имя текущего окна можно Ctrl+a N мы увидим в левом верхнем углу окна его имя.

Информацию об окне:
Ctrl+a i

Мы увидим в левом верхнем углу окнаинформацию и его имя, в нашем случае имя Main.

Как видно из предыдущих выводов, нумерация окон происходит последовательно, с возрастанием номера: 0 - 1 - 2 . Если мы закроем одно из них, нумерация оставшихся окон не изменится.

Закрытие окна в Screen производится выполнением команды exit в окне. Предварительно, нужно остановить все запущенные процессы в нем. Закрытие окон можно произвести и комбинацией Ctrl+a – k . Однако, выполнять ее не рекомендуется, так как эта операция идентична команде kill – “убить” процесс.

Давайте закроем второе окно. Остановим процесс top и выполним exit . А затем посмотрим вывод команды.

Видим, что нумерация теперь следующая: 0 — 2 . Давайте поменяем нумерацию окон, в частности, окна под номером 2 и присвоим ему номер 1 . Выполним команду:
Ctrl+a :
Внизу окна появится приглашение в виде двоеточия для ввода команды.
Введем команду:
number 1
И нажимаем Enter .
Смотрим результат:
Ctrl+a

Cправка по клавиатурным комбинациям Screen :
Ctrl+a ?

По умолчанию, Screen отображает только одно окно на экране эмулятора терминала. Однако, имеется возможность разбивать окно Screen в терминале на несколько. Для этого существует команда разбивки окна на горизонтальные части – регионы . Удобство в этом случае заключается в том, что нет надобности переключаться между окнами – все они находятся на виду и все процессы под контролем, достаточно лишь перевести взгляд на нужное окно.
Открываем эмулятор терминала и запускаем в нем Screen и выполняем команду разбивки экрана эмулятора на две горизонтальные части – регионы :
Ctrl+a S

Как видно на скриншоте, окно эмулятора терминала putty было разбито на две одинаковые горизонтальные части. В Screen такие части, выполненные с помощью команды Ctrl+a – S , называются регионами. Таких регионов может быть не обязательно два, а много больше. Допустим, чтобы получить три окна Screen в нашем случае, нужно в текущем регионе (он у нас верхний) снова выполнить команду Ctrl+a – S . Так можно создать три, четыре, пять и т. д. окон Screen . Но мы остановимся на варианте из двух окон, для наглядности.

В верхнем регионе у нас запущен Screen и на этом регионе установлен фокус (зеленый курсор). Нижний регион у нас пуст – в нем не запущен Screen и пока там ничего нет. Нам необходимо перейти на нижний регион, создать там окно Screen и запустить в нем процесс.
Переведем фокус на нижний регион:
Ctrl+a Tab
и создадим в нем окно Screen :
Ctrl+a c

У нас появилась командная строка.
Запустим в здесь процесс – top


Теперь переместимся (переведем фокус) опять на верхний регион и запустим там ps -aux .
Снова вводим команду:

Ctrl+a Tab
и выполняем:
ps -aux

Получаем:


Закрытие текущего региона в Screen производится командой Ctrl+a – X . Выполним ее в нашем текущем верхнем регионе:
Ctrl+a X

Получим:

Если открыто несколько (больше двух) регионов, можно закрыть сразу все, кроме одного – текущего, выполнив команду:
Ctrl+a Q

И вот еще:
Ctrl+a -| (вертикальное разбиение)

Ctrl+A - d - deattach - отключитсья от окна (но не закрыть)
Ctrl+A - H - записывать в журнал
Ctrl+A - C - (clear) очистить экран.
Ctrl+A - d - (detach) отключить screen от этого терминала. Ctrl+A - D -D - (pow_detach) отключиться и разрегистрироваться. Полезные опции командной строки: -ls и -list не запускает screen, а показывает вместо этого список идентифицирующих сеансы screen строк pid.tty.host. Сеансы, которые отмечены словом "detached" могут быть продолжены с помощью команды "screen -r". Сеансы, которые отмечены словом "attached", работают, и у них есть управляющий терминал. Если сеанс работает в многопользовательском режиме, он отмечен словом "multi". Сеансы, которые отмечены словом "unreachable" или работают на другом хосте, или умерли (dead). Недоступный (unreachable) сеанс считается мёртвым, если его имя соответствует или имени локального хоста, или указанному параметру (если такой есть). Как описывать строки для выбора рассказывается в описании ключа -r. Сеансы, отмеченные как "dead", нужно проверить и удалить. Если вы не уверены, нужно ли удалять какой-то сеанс, вы можете обратиться к системному администратору (если это не вы сами, иначе может возникнуть бесконечная рекурсия). Удалить сеансы можно с помощью опции -wipe. -wipe работает также как "screen -ls", только удаляет файлы уничтоженных сеансов вместо того чтобы помечать их как "dead" (мёртвые). Сеанс, который не отвечает, считается мёртвым, или если его имя соответствует имени локального хоста, или указанному явно параметру match. См. описание ключа -r, где рассказаны правила составления match. -r -r sessionowner/ возобновляет работу отключённого сеанса. Никакие другие опции (за исключением комбинаций с -d/-D не допускаются). Необязательный параметр tty.host может указываться для того чтобы определить какой именно сеанс из множества отключённых имеется в виду. Вторая форма используется для подключения к работающему в многопользовательском режиме сеансу другого пользователя. Эта опция говорит о том, что файл нужно искать в каталоге другого пользователя. Требует наличия бита setuid-root у программы screen. -x Подключиться к активной (not detached) сессии screen. (Многодисплейный режим). -X Отправить указанную команду в работающий сеанс screen. -S sessionname Эта опция может использоваться для задания имени сеансу при его создании. Имя используется для идентификации при вызове "screen -list" и "screen -r". Оно заменяет префикс "tty.host", использующийся по умолчанию. -A Адаптирует размеры всех окон под размер текущего терминала. По умолчанию screen пытается восстановить старый размер окна (при подключении к терминалам с изменяемыми размерами (те у кого есть "WS" в описании, например, suncmd или xterm). -d -m Запустить сеанс в "отключенном" режиме. Сессия создаётся, но к ней не выполняется подключение. Это полезно для загрузочных системных скриптов. -D -m Тоже запускает screen в "отключенном" режиме, но не создаёт новый процесс. Команда завершается, если сессия прерывается. d|-D не запускает новый сеанс, а отключает вместо этого уже запущенный ранее. Достигается тот же эффект, что и в с случае нажатия клавиш "C-a d" на управляющем терминале screen. Ключ -D эквивалентен ключу power detach. Если ни к одному сеансу нельзя обратиться, опция игнорируется. В связке с -r/-R могут быть достигнуты другие более интересные эффекты. -d -r Подключить к сеансу, и если необходимо, сначала отключить его.

В каждом сеансе, свои окна!

Разберем на примере скрипт:

#!/bin/bash "Тут мы направляем комманду exit в ссесию Proga1" screen -X -S Proga1 exit "Тут мы переходим в каталог program, который находится в нашей домашней дериктории и запускаем в "отключенном" режиме ссесию с именем Proga1 и в этой же ссесии сразу запускаем nasha_program.sh " cd ~/program/ screen -A -m -d -S Proga1 nasha_program.sh

Т.е. мы создаем сессию с именем Proga1 , но к ней не подключаемся и запускаем в ней программу и если сессия с таким именем уже существует,мы ее сначала закрываем посылая команду exit.

Управление внутри скрина:

Ctrl+a - c - создание новой вкладки внутри текущей сессии скрина.
Ctrl+a - цифра - переход на вкладку "номер" в текущей сессии скрина.
Ctrl+a - A - создание имени для текущей вкладки.
Ctrl+a - " - удобное перемещение по именованным вкладкам.
Ctrl+a - d - detach, отсоединение от сессии скрина, выход в обычный баш. Все задачи продолжают выполнятся, но внутри скрина.
Ctrl+d - обычный логауат, как из терминала из. Если вкладка единственная в сессии, текущий скрин завершит работу. Если одна из нескольких, то она закроется, а вы переместитесь в предыдущую вкладку по номеру.
Ctrl+D – выйти из всех сеансов screen

Управление скрином снаружи, из баша.
screen -r - attach , при наличии единственной сессии запущенного скрина - присоединение к ней.
screen -r proc-id - присоединение к указанной сессии по номеру ее процесса.
screen -ls - распечатка списка текущих запущенных скринов.

Если ссесия запущена с другого терминала (Attached),то можно попробывать -D -R

Тюнинг

Можно так же слегка тюнинговать внешнее отображение виртуальных консолей, для этого создайте в домашней директории файл .screenrc и впишите в него следующее:

Caption always caption string "%{kw}%-w%{wr}%n %t%{-}%+w" shell -$SHELL Теперь внизу всегда будет отображаться количество виртуальных консолей и цветное отображение текущей.

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 Sockets in /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/]

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
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; either version 2, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program (see the file COPYING); if not, write to the 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 up 1:44, 1 user, 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 03: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 _
The 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.
You can toggle the launch of Byobu at login with:
"byobu-disable" and "byobu-enable"
For tips, tricks, and more information, see:
* http://bit.ly/byobu-help
justin@Blank:~$
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...
When you press ctrl-a in Byobu, do you want it to operate in:
(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
- You can run "byobu-ctrl-a" at any time to change your selection
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 06:37:18 PM) (Detached)
3. Create a new Byobu session (screen)
4. Run a shell without Byobu (/bin/bash)
Choose 1-4 :

Можно выбрать любую из существующих сессий, создать новую сессию byobu, или даже новую оболочку, не использующую byobu.

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

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

byobu-enable
The Byobu window manager will be launched automatically at each text login.
To disable this behavior later, just run:
byobu-disable
Press to continue...

Как указано выше, чтобы отключить данную функцию, просто введите:

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

Tags: ,
Понравилось? Лайкни нас на Facebook