Screen
Screen это терминальный мультиплексор. Другими словами, оно дает нам возможность внутри действующей сессии открыть сколько угодно много виртуальных окон/терминалов. Что важно - процесс, запущенный внутри сессии через screen, будет продолжаться даже тогда, когда вы отключитесь от самой первой сессии.
screen –version Посмотреть версию
~/.screenrc - параметры screen сессии
#Выключаем приветствие startup_message off # включаем визуальный звонок vbell off # буфер для сохраненных строк делаем 10000 defscrollback 10000 # кастомим строку состояния hardstatus alwayslastline hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %m-%d %{W}%c %{g}]'
Вход в сессию
Команда | Описание |
---|---|
screen -S test | Запуск новой сессии с именем test |
screen -dmS home | Создание сессии home без подключения к ней |
screen -ls (-list) | просмотр запущенных сессий |
screen -x | Присоединиться к запущенной активной сессии |
screen -r | Присоединиться к сессии, если она одна |
screen -r 22222.test | подключимся к сессии 22222.test |
screen -dRR | Присоединиться к сессии, отключив все остальные дисплеи |
Выход из сессии
Команда | Описание |
---|---|
ctrl + a и d | выйти из текущей сессии screen |
ctrl + a и D D | выйти из текущей сессии и сделать logout |
ctrl + a \ | выйти из всех программ в screen(не рекомендуется) |
ctrl + a Ctrl+\ | Принудительный выход(не рекомендуется) |
exit | закрыть текущую сессию |
screen -X -S 21208.21179.home quit | |
kill 19671 | ID сессии screen = ID процесса, поэтому удалив процесс можно удалить сессиию |
screen -S my_session_4 -X quit | Запустить команду quit в сессии, закрыть сессию |
Управление окнами
Сочетание клавиш | Описание |
---|---|
Ctrl+a или ? | Список команд |
ctrl + a и c | Создание терминального окна |
ctrl + a и ctrl + a | перейти между окнами |
ctrl + a и <номер> | Переход в окно <номер> |
ctrl + a и ' <номер или название окна> | Переход в окно <номер или название окна> |
ctrl + a и n или Ctrl+a пробел | Переход к следующему окну в списке |
ctrl + a и p | Переход к предыдущему окну |
ctrl + a и " | Показать список всех окон |
ctrl + a и w | Показать панель окон |
ctrl + a и k | Принудительно закрыть текущее окно(не рекомендуется) |
ctrl + a и \ | Принудительно закрыть все окна(не рекомендуется) |
Деление окон
Сочетание клавиш | Описание |
---|---|
ctrl + a и S | Разделить окно по горизонтали на две области |
ctrl + a и | или ctrl+a V | Разделить окно по вертикали на две области |
ctrl + a и tab | Перейти на следующую область разделённого окна |
ctrl + a и X | Удалить текущий регион |
ctrl + a и Q | Закрыть все разделённые области кроме |
Буфер обмена и навигация
Сочетание клавиш | Описание |
---|---|
ctrl+a [ или ctrl+a <esc> | Навигация по буферу |
<пробел> | Включить выделение для копирования |
ctrl+a ] | Вставить из буфера |
Скриптинг
Сочетание клавиш | Описание |
---|---|
screen -S имя сессии -X команда | посылает команду в сессию |
screen -S session1 -X ping www.ru | Запускает пинг в сессии |
screen -S session1 [-p <page>] -X stuff $'quit\r' | Запускает пинг в сессии |
# run bash within screen screen -AmdS bash_shell bash # run top within that bash session screen -S bash_shell -p 0 -X stuff $'top\r' # ... some time later # stuff 'q' to tell top to quit screen -S bash_shell -X stuff 'q' # stuff 'exit\n' to exit bash session screen -S bash_shell -X stuff $'exit\r'
Разное
Сочетание клавиш | Описание |
---|---|
ctrl+a ctrl+l | Перерисовка окна |
ctrl+a M | Мониторинг окна на активность |
ctrl+a _ | Мониторинг окна на отсутсвие активности |
ctrl+a ctrl+V | Ввести цифровый символ |
ctrl+a p | Ввести пароль на сессию |
ctrl+a : | Ввести команду screen |
ctrl+a H | Запретить логирование в screen сессии |
Буфер скроллинга
В режиме копирования можно осуществлять перемещение с помощью следующих сочетаний клавиш.
Сочетание клавиш | Описание |
---|---|
ctrl+u | Скроллинг на пол страницы верх |
ctrl+d | Скроллинг на пол страницы вниз |
ctrl+b | Назад |
ctrl+f | Вперёд |
h/j/k/l | Курсор лево/вниз/вверх/вправо |
Типовой сценарий использования screen
- После SSH подключения к серверу, набираем screen;
- Запускаем интересующую нас команду в режиме screen - сессии;
- Выполняем команду Ctrl + a и d, чтобы выйти из режима работы с экран-сессией
- Через какое-то время возвращаемся к запущенному ранее экрану командой screen -r
Ещё один сценарий
1.Создаём сессию archiving
screen -S archiving
Выходим из сессии Ctrl+A+D
2.Создаём сессию BuildO
screen -S BuildO
Выходим из сессии Ctrl+A+D
3.Просматриваем список сессий
screen -ls
4.Подключаемся к сессии BuildO
screen -r 20577.BuildO
5.Выходим из сессии
exit