Select Page

10 примеров команды "screen" для управления Linux терминалом

10 примеров команды "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 [2,583 kB]
47% [1 dpkg 1,625 kB/2,583 kB 47%]                                        14,7 kB/s

Когда будет проходить загрузка, вы можете нажать “Ctrl-А” и “d“. Вы ничего не увидите при нажатии этих клавиш. Результат будет выглядеть так:

[detached from 5561.pts-0.mint]
pungki@mint ~ $

После того как вы отключили 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-А” и “К” чтобы прибить экрана.

About The Author

Leave a reply

Ваш адрес email не будет опубликован.