- screen command in Linux with Examples
- Как пользоваться утилитой screen в Linux?
- Немножко теории
- Установка screen в Linux
- Установка screen в Ubuntu и Debian
- Установка screen в CentOS и Fedora
- Запуск screen в Linux
- Сессия screen с именем
- Как правильно работать с окнами в Windows
- Выход из screen сессии
- Возврат к screen сессии
- Немножко кастомизации screen под вас
- Типовой сценарий использования screen
- Выводы
screen command in Linux with Examples
screen command in Linux provides the ability to launch and use multiple shell sessions from a single ssh session. When a process is started with ‘screen’, the process can be detached from session & then can reattach the session at a later time. When the session is detached, the process that was originally started from the screen is still running and managed by the screen itself. The process can then re-attach the session at a later time, and the terminals are still there, the way it was left. Syntax:
- -a: It force all capabilities into each window’s termcap.
- -A -[r|R]: It adapt all windows to the new display width & height.
- -c file: It read configuration file instead of ‘.screenrc’.
- -d (-r): It detach the elsewhere running screen (and reattach here).
- -dmS name: It start as daemon: Screen session in detached mode.
- -D (-r): It detach and logout remote (and reattach here).
- -D -RR: It do whatever is needed to get a screen session.
- -e xy: It change the command characters.
- -f: It make the flow control on, -fn = off, -fa = auto.
- -h lines: It set the size of the scrollback history buffer.
- -i: It interrupt output sooner when flow control is on.
- -l: It make the login mode on (update /var/run/utmp), -ln = off.
- -ls [match]: It display all the attached screens.
- -L: It turn on output logging.
- -m: It ignore $STY variable, do create a new screen session.
- -O: It choose optimal output rather than exact vt100 emulation.
- -p window: It preselect the named window if it exists.
- -q: It quiet startup. Exits with non-zero return code if unsuccessful.
- -Q: It commands will send the response to the stdout of the querying process.
- -r [session]: It reattach to a detached screen process.
- -R: It reattach if possible, otherwise start a new session.
- -S sockname: It name this session .sockname instead of …
- -t title: It set title. (window’s name).
- -T term: It use term as $TERM for windows, rather than “screen”.
- -U: It tell screen to use UTF-8 encoding.
- -v: It print “Screen version 4.06.02 (GNU) 23-Oct-17”.
- -x: It attach to a not detached screen. (Multi display mode).
- -X: It execute as a screen command in the specified session.
Shortcut keys Options:
- Ctrl-a + c: It create a new windows.
- Ctrl-a + w: It display the list of all the windows currently opened.
- Ctrl-a + A: It rename the current windows. The name will appear when you will list the list of windows opened with Ctrl-a + w.
- Ctrl-a + n: It go to the next windows.
- Ctrl-a + p: It go to the previous windows.
- Ctrl-a + Ctrl-a: It back to the last windows used.
- Ctrl-a + k: It close the current windows (kill).
- Ctrl-a + S: It split the current windows horizontally. To switch between the windows, do Ctrl-a + Tab.
- Ctrl-a + |: It split the current windows vertically.
- Ctrl-a + X: Close active Split window
- Ctrl-a + Q: Close all Split windows
- Ctrl-a + d: It detach a screen session without stopping it.
- Ctrl-a + r: It reattach a detached screen session.
- Ctrl-a + [: It start the copy mode.
- Ctrl-a + ]: It paste the copied text.
- Installation of screen command: To install the screen command simply go to the terminal and type the following command:
- screen: It will start a new window within the screen.
- -S: It will start a new window within the screen and also gives a name to the window. It creates a session which is identified by that name. The name can be used to reattach screen at a later stage.
- -ls: It is used to display the currently opened screens including those running in the background. It will list all the attached as well as detached screen sessions.
- -d: It is used to detach a screen session so that it can be reattached in future. It can also be done with the help of shortcut key Ctrl-a + d
- Here 1643 is the screen id we want to detach.
- -r: It is used to reattach a screen session which was detached in past.
Как пользоваться утилитой screen в Linux?
Сейчас вы точно прочувствуете важное команды screen . Бывало ли у вас такое, что вы выполняете (очень долго) команду в консоли — CLI на удаленной машине, будучи подключенным через SSH? Команда долго выполняется и близится к завершению как вдруг пропадает подключение, рвется SSH подключение и все, что вы делали — пропало?
Прости, что напомнили. Знаем, это болезненно. Что же, вытрем слезы. Для этих ситуаций есть команда screen о которой мы и поговорим.
Немножко теории
Так называемый screen это терминальный мультиплексор (нас тоже пугает это слово). Другими словами, оно дает нам возможность внутри действующей сессии открыть сколько угодно много виртуальных окон/терминалов. Что важно — процесс, запущенный внутри сессии через screen, будет продолжаться даже тогда, когда вы отключитесь от самой первой сессии.
Установка screen в Linux
Вообще, пакет screen предустановлен на большинстве современных Linux — дистров. Проверить можно командой:
screen --version Screen version 4.00.03 (FAU) 23-Oct-06
Если случилось так, что у вас его нет — это можно быстро исправить простой установкой.
Установка screen в Ubuntu и Debian
Установка screen в CentOS и Fedora
Запуск screen в Linux
Чтобы запустить screen в консоли, просто наберите screen . Что может быть проще, не правда ли?
У вас откроется новая сессия в новом окне. Уже здесь вы можете вводить все нужные shell команды. Находясь в режиме скрина (screen) вы можете посмотреть список доступных вам команд управления этим режимом. Вот так:
Если не получается нажать указанную выше комбинацию, можно поступить проще: нажмите отдельно Ctrl+a , отпустите, а затем в консоль наберите ? и нажмите Enter
Сессия screen с именем
Ну очень удобная фича. Если вы делаете несколько процессов параллельно, просто обзовите их так, чтобы потом понять, что и где выполняется. Синтаксис такой:
screen -S имя_сессия_скрин
Например, вы можете запустить ping — замер хоста с 1С и назвать сессию так:
screen -S pings_towards_1C
Всегда используйте скрин именно так. Будет значительно удобнее.
Как правильно работать с окнами в Windows
Как мы уже сказали, когда вы создаете новую screen — сессию, вы создадите новое окно с shell оболочкой внутри. И что интересно — внутри скрин сессии вы можете создать множество дополнительных окон. Чтобы это сделать, воспользуйтесь командой (внутри скрина) Ctrl+a и c . Новому окну будет назначен номер от 0 до 9 (первый свободный).
Ниже мы собрали все команды, которые понадобятся вам для управления скринами:
- Ctrl+a и c — создать дополнительное окно ;
- Ctrl+a и » — показать список всех имеющихся окон;
- Ctrl+a и 0 — переключиться на окно с номером 0 (номер может быть иной);
- Ctrl+a и A — переименовать текущее окно;
- Ctrl+a и S — разделить окно по горизонтали на две области;
- Ctrl+a и | — разделить окно по вертикали на две области;
- Ctrl+a и tab — переключить рабочий фокус на следующую область разделенного окна;
- Ctrl+a и Ctrl+a — переключить рабочий фокус на предыдущую область разделенного окна;
- Ctrl+a и Q — закрыть все разделенные области кроме;
- Ctrl+a и X — закрыть текущую область;
Выход из screen сессии
Вы можете легко выйти из screen — сессии набрав:
Самое важное: запущенная вами в этот момент команда не остановится и будет продолжать свое выполнение.
Возврат к screen сессии
Чтобы вернуть к screen — сессии используйте команду:
Если у вас запущено больше чем одна screen — сессия, то после ключа r нужно указать ее ID. Узнать его просто с помощью команды:
Вывод этой команды будет выглядеть вот так:
screen -ls There are screens on: 32328.pings_towards_1C (Detached) 32482.wiki.merionet.ru_is_one_love (Detached) 2 Sockets in /var/run/screen/S-root.
В выводе выше мы выделили ID — сессий. Например, чтобы вернуться к сессии 32328 (pings_towards_1C), дайте команду:
Немножко кастомизации screen под вас
Когда screen запускается, он считывает свои конфигурационные параметры из /etc/screenrc и ~/.screenrc , если файл присутствует. Так вот — мы можем легко перенастроить предпочтения использования screen и сделать это в файле .screenrc .
Посмотрите пример с комментариями, как мы закастомили screen для себя:
# Выключаем приветствие startup_message off # включаем визуальный звонок vbell off # буфер для сохраненных строк делаем 10000 defscrollback 10000 # кастомим строку состояния hardstatus alwayslastline hardstatus string '%[ %%H %][%= %%?%-Lw%?%(%%n*%f%t%?(%u)%?%)%%?%+Lw%?%?%= %][% %m-%d %%c %]'
Типовой сценарий использования screen
Общий случай, так сказать. Обычно он состоит из следующих шагов:
- После SSH подключения к серверу, набираем screen ;
- Запускаем интересующую нас команду в режиме screen — сессии;
- Выполняем команду Ctrl + a и d , чтобы выйти из режима работы с экран-сессией
- Через какое-то время возвращаемся к запущенному ранее экрану командой screen -r
Выводы
Мы разобрались, как создавать screen сессии, управлять ими внутри, открывая новые окна, выходить из их режима управления (без прекращения выполнения команды), делить горизонтально и вертикально экраны.
Ах да, ещё мы научились кастомизировать screen под себя. Профит!