Инструменты пользователя

Инструменты сайта


doc:sysadmin:free_os:screen

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
doc:sysadmin:free_os:screen [d.m.Y H:i] – создано dbehterevdoc:sysadmin:free_os:screen [d.m.Y H:i] (текущий) – внешнее изменение 127.0.0.1
Строка 1: Строка 1:
 +====== Восстановление подключения к SSH после внезапного отключения или управление сессиями с помощью screen ======
  
 +Программа screen позволяет создавать несколько консольных сессий в одной "виртуальной" сессии, удобно отключаться и подключаться к виртуальной сессии без потери результата работы.
 +
 +  * Для чего: для управления сессиями SSH.
 +  * Что дает: возможность быстрого "восстановления" сессии SSH, в частности, при внезапном отключении. Знакома ситуация перекомпиляции ядра на удаленной машине, когда внезапно пропадает связь по SSH? Если да, то читаем дальше.
 +
 +===== Подробное описание =====
 +
 +<note>
 +В Ubuntu (с какой версией?) пакет screen уже в поставке. Во FreeBSD ставим из порта sysutils/screen.
 +</note>
 +
 +**1.** Итак, подключились по SSH к удаленной машине. Сразу запускаем сессию screen:
 +<code>
 +# screen
 +</code>
 +Нажимаем <пробел> или <Enter> и входим в сессию screen. Запустим для примера в данной сессии чтение журнала messages: 
 +<code>
 +# tail -F /var/log/messages
 +</code>
 +
 +**2.** Создадим новую сессию screen, для этого нажмем сочетание клавиш <Ctrl>+<a> а затем <c>. Откроется новая виртуальная сессия screen. Запустим в ней, скажем, чтение почтового лога:
 +<code>
 +# tail -F /var/log/exim/mainlog
 +</code>
 +
 +**3.** Посмотрим список окон в нашей виртуальной сессии: <Ctrl>+<a> а затем <%%"%%>:
 +<code>
 +Num Name                                                                  
 +
 +  0 csh                                                                      
 +  1 csh 
 +</code>
 +
 +Видим списком перечисление сессий, к каждой можно подключиться.
 +
 +**4.** Переименуем окна сессий в удобные для нас имена: <Ctrl>+<a> а затем <Shift>+<a>. Т.е. переключившись в нужную сессию, нажимаем указанное сочетание клавиш и вводим название. Т.о. у меня получился такой список:
 +<code>
 +Num Name                                                                   
 +
 +  0 messages                                                                   
 +  1 mail
 +</code>
 +
 +**5.** Пусть в этот момент времени произошел дисконнект, и вы заново подключились к серверу. Набираем в командной строке screen -ls и получаем примерный вывод:
 +<code>
 +# screen -ls
 +There is a screen on:
 + 24122.ttyp0.itcall (Detached)
 +1 Socket in /tmp/screens/S-root.
 +</code>
 +Значение "Detached" говорит нам о том, что мы отключены от сессии screen. Подключаемся!
 +<code>
 +screen -r 24122.ttyp0.itcal
 +</code>
 +И опять можем подключиться к нужной сессии. Т.е. результат работы в следствии внезапного пропадания связи не потерялся.
 +
 +**6.** Идем дальше
 +
 +Подключим к нашей запущенной сессии другого пользователя, чтобы он мог видеть, что происходит в данный момент на экране. Для этого он должен подключиться по SSH, используя то же имя пользователя, к серверу и ввести в командной строке:
 +<code>
 +# screen -x <имя_сессии>
 +</code>
 +
 +Имя сессии можно посмотреть по screen -ls, а если на сервере только одна сессия screen, то этот параметр можно вовсе не указывать.
 +
 +**7.** Полезные команды screen
 +
 +^  Сочетание  ^    Описание  ^
 +|Ctrl+a, ?  |Помощь  |
 +|Ctrl+a, c  |Создать новое окно в текущей сессии screen |
 +|Ctrl+a, d  |Отключиться от текущей сессии screen. Все сессии в screen остаются в рабочем состоянии.|
 +|Ctrl+a, %%"%%  |Показать список окон в текущей сессии screen |
 +|Ctrl+a, '  |Переключиться на окно по номеру |
 +|Ctrl+a, n  |Переключиться на следующее окно |
 +|Ctrl+a, p  |Переключиться на предыдущее окно |
 +|Ctrl+a, Shift+a  |Переименовать текущее окно |
 +|Ctrl+a, k|Закрыть текущее окно screen|
 +|Ctrl+a, w|Перечислить списком все окна|
 +
 +TAG: {{tag> sysadmin FreeBSD}} 
 +
 +~~DISCUSSION~~