Статьи

Как работать с Linux Screen

Как работать с Linux Screen

Linux Screen позволяет вам:

  • Создавать множественные окна в терминале SSH;
  • Сохранять сессию активной даже при сетевых отключениях;
  • Отключаться и переподключаться к сессии из разных мест;
  • Выполнять длительный процесс, не поддерживая активную сессию.


Более 500 моделей серверов по самым лучшим ценам. Под любые задачи. Мы профессионально занимаемся этим направлением.


Подсказки Screen

Мы в компании ежедневно используем Linux Screen и продолжаем добавлять новые подсказки. Если у вас есть что-то, что вы хотели бы добавить, просто напишите об этом в комментариях.

Установка Screen с Yum

Наверняка, у вас уже есть Linux Screen в вашей системе. В большинстве дистрибутивов Red Hat и CentOS вы можете найти Screen Linux в /usr/bin/screen. Чтобы увидеть, находится ли там Screen, вы можете использовать следующую команду:

[root@office ~]# which screen
/usr/bin/screen

Если у вас нет Screen, то можете установить его из RPM или файла пакета для вашей системы. Например, на CentOS можно установить Screen с yum:

[root@office ~]# yum install screen
...
Complete!

Поскольку вы, скорее всего, уже имеете Screen или можете использовать RPM, я не буду описывать установку Screen из ресурса. А расскажу, как использовать screen.

Запуск Screen Linux

Screen запускается с командной строки точно так же, как любая другая команда:

root@office ~]# screen

Теперь вы в окне в Screen. Оно функционирует точно так же, как нормальная оболочка за исключением нескольких специальных символов.

Команда управления

Команда: “Ctrl-a”
Screen использует команду “Ctrl-a” , это - клавиша “CTRL” и нижний регистр “a” работает как сигнал отправить команды Screen’у вместо оболочки.
Например, “Ctrl-a” потом “?”. У Вас должна появится страница справки Screen.

Screen key bindings, page 1 of 4.

Command key:  ^A   Literal ^A:  a

break
      ^B b          only       Q
clear      C             other      ^A
colon      :             pow_break  B
copy       ^[ [          pow_detach D
detach     ^D d          prev       ^P p ^?
digraph    ^V            readbuf    <
displays   *             redisplay  ^L l
fit        F             removebuf  =
flow       ^F f          reset      Z
focus      ^I            screen     ^C c
hardcopy   h             select     '
help       ?             silence    _

Привязка клавиш - это команды, которые принимает Screen после того, как нажаты “Ctrl-a”. Вы можете переназначить эти ключи по своему усмотрению, используя .screenrc файл, но я использую значения по умолчанию.

Создание окон

Команда: “Ctrl-a” “c”.
Чтобы создать новое окно используйте “Ctrl-a” “c”.
Такая комбинация, с настройками по умолчанию создаст новое окно. Ваше старое окно будет все еще активно.
Например, я могу выполнить top и затем открыть новое окно, чтобы заняться чем-то другим. Top остается рабочей! Чтобы попробовать, запустите screen, а затем выполните top. (Примечание: некоторые скрины у меня урезаны, чтобы оставить свободное место.)
Запустите

top - 09:10:33 up 35 days, 17:26,  1 user,  load averag
Tasks: 131 total,   1 running, 130 sleeping,   0 stoppe
Cpu(s):  0.4%us,  0.2%sy,  0.0%ni, 99.4%id,  0.0%wa,  0
Mem:  12302040k total,  6363652k used,  5938388k free,
Swap:  1052248k total,       12k used,  1052236k free,

Теперь откройте новое окно с: "Ctrl-a” “c
Ваше главное окно все еще запущено. При необходимости, вы можете переключиться на него.

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

Команда: “Ctrl-a” “n”
Screen позволяет перемещаться вперед и назад. Вы можете использовать “Ctrl-an”, чтобы вернуться обратно. Эта команда переключает на следующее окно.
Работает как карусель- циклично выполнится назад по кругу к Вашему первому окну.
Вы можете создать несколько окон и переключателя по ним “Ctrl-a” “n” для следующего окна или “Ctrl-a” “p” для предыдущего окна.
Каждый процесс продолжит работать, пока вы не закроете окно.

Отсоединение от Screen

Команда: "Ctrl-a" "d"
Экран позволяет отсоединяться от окна и вернуться к нему позже.
Если сетевая связь прервется, то Screen автоматически отсоединит сеанс!
Можете отсоединиться, используя “Ctrl-a” “d”.
Все окна Screen все еще там, и вы можете повторно присоединиться к ним.
Это удобно при использовании rsync для миграции сервера.

Повторное присоединение к Screen

Если Ваше соединение оборвалось или Вы отсоединились от Screen’а, Вы можете повторно подключиться, просто запуская:

[jeffh@office ~]$ screen -r

Произойдёт повторное подключение к Вашему Screen.
Однако, если у Вас есть несколько Screen’ов,то может получится это:

[jeffh@office ~]$ screen -r
There are several suitable screens on:
31917.pts-5.office      (Detached)
31844.pts-0.office      (Detached)
Type "screen [-d] -r [pid.]tty.host" to resume one of them.

Если так, просто определите Screen, который хотите.

[jeffh@office ~]$ screen -r 31844.pts-0.office

Регистрация действий Screen

Я считаю важным фиксировать то, что я делаю на чьем-либо сервере. К счастью, Screen это упрощает.
Используя “Ctrl-a” “H”, запускается регистрация сеанса.
Screen продолжит добавлять данные к файлу через многократные сеансы. Использовать функцию регистрации очень полезно для отслеживания того, что вы делали, особенно если требуется вносить много изменений. Если что-то пойдёт не так, всегда будет возможность найти ошибку.

Получение уведомлений

Screen может контролировать окно, его активность или бездействие.
Данная функция необходима, если загружаете большие файлы, делаете компиляцию или ожидаете вывода.
Если Вы ожидаете ответа от «долгой» программы, можете использовать “Ctrl-a” “M”, чтобы отследить активность. Screen высветит предупреждение внизу страницы, когда отклик будет зарегистрирован на том экране.
Я использую это при выполнении команды, которая занимает много времени. Могу просто запустить команду, переключиться на другое окно и не возвращаться обратно каждый раз, чтобы проверить состояние.
Если загружаете большой файл или компилируете программу, по завершению придёт уведомление. Это – будет сигналом того, что задание выполнено. Чтобы контролировать такие моменты без вывода экрана я используют “Ctrl-A” “_”.

Блокировка сеанса Screen 

Если Вам необходимо отойти от Вашего компьютера на несколько минут, Вы можете заблокировать свой сеанс, используя "Ctrl-a" "x". Для доступа к сеансу снова потребуется пароль.
Screen used by root <jeffh>.
Password:

Остановка Screen

Когда вы закончили работу, я бы порекомендовал закончить сеанс вместо того, чтобы оставить его на потом. Чтобы остановить Screen, можете, как обычно, просто ввести «Exit» из своей оболочки. Это закроет Screen. Чтобы завершить сеанс вы должны закрыть все окна.
Как только вы закрываете все окна выводится сообщение о том, что Screen начал завершение.
[screen is terminating]
Альтернативно, Вы можете использовать "Ctrl-a" "k".

Ваши подсказки 

Пожалуйста пришлите мне ваши подсказки. Буду очень вам благодарен.

С уважением, Арсений Заров. Компания Ларга



Комментировать