как разделить терминал в linux
Как использовать экран GNU для управления терминальными сессиями в Linux
Как использовать экран GNU для управления терминальными сессиями в Linux
GNU Screen — это терминальный мультиплексор, который позволяет иметь несколько терминальных сессий внутри основного терминала.
Так зачем нам GNU Screen? — Иногда мы можем столкнуться с некоторыми проблемами, такими как автоматическое завершение удаленных ssh-соединений из-за проблем с сетью. Это может быть болезненно, если задача выполняется в производственной среде. Таким образом, для решения таких проблем рекомендуется отдельный сеанс экрана, который не завершается с окончанием сеансов терминала.
В системах Linux и Unix у нас есть инструмент мультиплексора терминала под названием screen, который используется для управления сессиями терминала. В этой статье мы расскажем, как использовать экран GNU в Linux для управления сеансами терминала при работе над важной задачей в производственных системах.
Установка экранных команд GNU
Установка пакета screen в системе Linux проста и легка. Некоторые современные операционные системы поставляются с предустановленными экранными приложениями. Выполните следующую команду, чтобы проверить доступность экрана.
Если вы получаете другой вывод, значит, в вашей системе нет экранного инструмента. Выполните следующую команду, чтобы установить пакет экрана.
Стартовый экран в Linux
После завершения установки просто запустите командный экран, чтобы начать сеансы экрана.
Создать сеанс экрана с именем
Листинг параметров экрана
Список сеансов экрана
Используйте следующую команду для вывода списка доступных сеансов экрана.
Отключить сеанс экрана Linux
Повторно подключите сеанс экрана Linux
Сеансы экрана можно повторно подключить, используя только идентификатор экрана или имя экрана. В приведенном выше примере 25148 — это идентификатор, а pts-0.infoit — это имя экрана 25148.pts-0.infoit.
Разделение экрана Linux Windows
Иногда вам может потребоваться разделить окна экрана на несколько экранов для выполнения нескольких задач. Разделение можно производить как по горизонтали, так и по вертикали.
Горизонтальное разделение окон экрана можно выполнить, нажав ctrl-a, а затем S (верхний регистр). Повторите тот же процесс, чтобы создать n вертикальных окон.
Создать новый терминал в разделенном сеансе
Неразбитые окна экрана
Чтобы разделить окна с разделенным экраном, вы можете просто применить ctrl-a с помощью клавиши Q
Сеансы блокировки экрана
Для защиты от несанкционированного доступа сеансы экрана могут быть заблокированы без блокировки обычных пользователей сеанса. Чтобы заблокировать экранный терминал, используйте команду ctrl-a, а затем клавишу x (нижний регистр). Вам будет предложено установить пароль, применить пароль защиты и все.
Найдите владельцев сеансов экрана
Screen хранит информацию об открытых сеансах экрана в каталоге /var/run/screen. Перечислите содержимое, хранящееся в каталоге, чтобы найти владельца экрана.
Завершить сеансы экрана
Доступ к экранной странице справки
Выполните следующую команду для доступа к странице справки экрана
Выполните следующую команду, чтобы получить доступ к экранной странице руководства пользователя.
Некоторые полезные параметры экранных команд
Заключение
В этой статье мы узнали о различных командах gnu screen для управления сеансами терминала Linux. Если у вас есть предложения и отзывы, оставьте комментарий ниже.
Как пользоваться screen для управления терминалами Linux и отсоединения процессов от терминала
Что такое screen
Screen — это программа для «уплотнения» (мультиплекса) физических консолей. Суть в том, что несколько процессов (как правило интерактивных шеллов) могут работать в одном окне консоли. То есть эта программа позволяет пользователю иметь несколько экземпляров терминалов внутри одного терминала этого менеджера окон. Речь идёт не о вкладках, а о перемещении терминалов в фон. Одним из эффектов работы screen является то, что при закрытии окна терминала, процесс продолжает работу.
Приложение screen очень полезно если вы имеете дело с несколькими программами из интерфейса командной строки, а также для отделения программ от оболочки терминала. Она также позволяет вам делиться вашими сессиями с другими пользователями и отсоединять/подсоединять сессии терминала.
Как установить screen
На некоторых системах пакет screen может быть уже установлен. Если у вас его нет, то установите его.
На Debian, Linux Mint, Ubuntu, Kali Linux и их производных:
На RedHat и производных:
На Arch Linux, BlackArch и их производных:
Чтобы установить screen на Solaris:
На самом деле, screen это очень полезная команда в Linux которая может пригодиться при различных обстоятельствах. Давайте начнём знакомство с функциями screen.
Запуск screen в первый раз
Просто наберите screen в приглашении командной строки:
Будет выведена информация о программе — нажмите ENTER, чтобы её скрыть. Затем приглашение командной строки вернётся в точно такое же, как было и ранее.
Справка по параметрам screen
Когда вы вошли в screen, вы можете делать вашу обычную работу как будто бы вы в обычном окружении командной строки. Программа screen расширяет функциольность за счёт своих команд (параметров).
Нажмите Ctrl-A, а затем ? (то есть Shift+/). Затем вы увидите все команды (параметры) screen.
Чтобы выйти из экрана справки, нажмите Пробел или Enter.
Отсоединение процесса от консоли в screen
Одним из преимуществ screen является возможность отсоединить от консоли процесс, который запущен внутри screen. Далее вы можете даже закрыть консоль (или отключиться от SSH) — процесс всё равно продолжит свою работу. Затем вы можете восстановить окно консоли — вы увидите, что программа всё это время работала и её данные не потеряны.
Пример сценария: вы работаете по SSH на вашем сервере. Вам нужно запустить программу, выполнение которой требует много времени. Это может быть скачивание большого патча для системы с помощью wget или любая длительная команда. В качестве примера я возьму обычный ping. Предположим мне нужно проверить качество связи с помощью ping на протяжении двух часов. Если я отключусь от SSH или связь будет потеряна случайно, то тогда процесс выполнения команды в консоли будет остановлен и нужно будет вновь начинать сначала. Чтобы этого избежать, мы можем использовать screen для отсоединения процесса от консоли.
Рассмотрим на примере конкретных команд.
Вначале входим в screen:
Затем я запускаю пинг:
В процессе работы программы, мы можем нажать Ctrl-a и d. Вывод от программы прекратиться, мы увидим примерно следующую информацию:
Повторное подсоединение консоли с запущенным процессом к screen
После отсоединения процесса и закрытия screens, вы можете отключиться от сервера, то есть закрыть SSH сессию и заняться другими делами. Затем вы можете подключиться к SSH снова — причём, возможно даже с другого компьютера. После этого вы можете увидеть прогресс выполнения вашего процесса (пинг, загрузка, что угодно). Чтобы это сделать, нужно восстановить screen. Для этого запустите следующую команду:
И вы увидите, что процесс, который вы здесь оставили, всё ещё запущен.
Если вы хотите восстановить сессию screen 13786.pts-2.HackWare, тогда наберите следующую команду:
Использование нескольких screen
Когда нужен больше чем один screen для выполнения работы, это возможно? Да, можно одновременно работать с несколькими screen. Вы можете запустить несколько окон screen одновременно — есть два способа сделать это.
Во-первых, вы можете отсоединить первый экран screen для запуска другого screen в реальном терминале.
Во-вторых, вы можете делать вложенные экраны screen.
Переключение между экранами
Когда вы делаете вложенные screen, вы можете переключаться между ними используя команду Ctrl-a и n. В этом случае вы перейдёте к следующему окну screen. Когда вам нужно перейти к предыдущем screen, то просто нажмите Ctrl-a и p.
Для создания нового окна screen нажмите Ctrl-a и c.
Как записать все действий в терминале
Иногда важно сохранить все действия в терминале, которые вы выполнили находясь в консоли, то есть вести журнал (логи) активности в консоли.
Допустим вы администратор Linux, который управляет множеством серверов Linux. С ведением журнала в screen, вам не нужно выписывать каждую команду, которую вы ввели. Для активации функции ведения журнала screen просто нажмите Ctrl-a и H. Пожалуйста, будьте осторожны — используется заглавная H (то есть Shift+h). Использование прописной ‘h’ только создаст скриншот экрана screen в файле с именем hardcopy.
В нижней левой части экрана будет уведомление, которое говорит что-то вроде Creating logfile «screenlog.0» (производится ведение журнала экрана). В своей домашней директории вы найдёте файл screenlog.0.
Эта функция будет добавлять в файл всё, что вы делаете в окне screen. Для закрытия активности по ведению журнала screen, вновь нажмите Ctrl-a и H.
Другой способ активировать функцию ведения журнала: вы можете добавить параметр -L во время запуска screen. Команда будет выглядеть примерно так:
Блокировка screen
Screen также имеет комбинацию клавиш для блокировки окна screen. Вы можете нажать Ctrl-a и x для блокировки screen. Это полезно, если вы хотите быстро заблокировать ваш screen. Пример вывода после блокировки:
Вы можете использовать ваш пароль в Linux чтобы разблокировать его.
Добавление пароля на заблокированный screen
Для дополнительной безопасности, вы можете установить пароль на вашу сессию screen. Пароль будет спрашиваться каждый раз, когда вы хотите подсоединить screen. Этот пароль отличается от пароля в описанным выше механизме блокировки окна Screen.
Чтобы защитить паролем screen, вы можете отредактировать файл «$HOME/.screenrc». Если файл не существует, создайте его. Синтаксис будет примерно таким:
ВАШ_ПАРОЛЬ нужно указать в виде хеша, а не в виде обычного текста. Если там указано none, то пароль не будет спрашиваться. Если не указать пароль, то screen покажет приглашение для ввода пароля и его подтверждения и поместит хеш в буфер обмена.
Чтобы сгенерировать хеш, нужно выполнить следующую последовательность действий:
Как выйти из Screen
Есть два способа покинуть screen. Первый это использовать Ctrl-a и d для отсоединения экрана. Второй — мы можем использовать команду exit для закрытия сессии screen. Вы также можете использовать Ctrl-a и K для остановки screen.
Как запустить скрипт, процесс которого отделён от терминала
С помощью screen также возможно запуск файла скрипта, который изначально будет отделён от терминала, например:
Это запустит отделённый (независящий) от терминала процесс. Можно отделить любую команду или процесс с помощью программы screen.
Как просмотреть предыдущие результаты (вывод)
Если вывод программы очень большой, то у вас могут возникнуть затруднения при скроллинге вверх.
Вы можете нажать Ctrl-a и Esc для входа в Copy mode (режим копирования). Когда вы окажитесь в режиме копирвоания, вы можете использовать для пролистывания экранов кнопки PageUp и PageDown.
Для выхода из Copy Mode, нажмите ещё раз Esc.
Как разделить экран на несколько вкладок в screen
В screen вы можете разделить окно на несколько виртуальных терминалов, которые будут одновременно присутствовать на экране. Для этого нажмите Ctrl-a и S.
Именные окна screen
Вы можете использовать несколько именных окон screen. Для этого запустите сессию screen с опцией -S, после которой укажите желаемое имя, например:
эта команда создаст screen с именем testing.
покажет текущие сессии screen с их именами:
Чтобы подключиться к именной сессии screen используйте опцию -x с именем сессии:
в результате предыдущей команды, вы подключитесь к testing screen.
Альтернатива для screen
Если вы ищите альтернативу для screen, то присмотритесь к tmux.
Это азы использования screen которые вам пригодятся практически при каждом её использовании. У программы ещё множество функций, с которыми вы можете ознакомится в её справке или на странице man.
Terminator: эмулятор терминала для управления несколькими окнами терминала на Linux
Программа Terminator позволяет иметь множество терминалов в одном окне. С помощью этой программы в одной консоли вы можете использовать множество терминалов, которые можете разделять и изменять их размер, всё в одном окне — примерно так же, как работает мультиплексор терминалов tmux.
В чём отличие Terminator
На рабочем столе с графическим интерфейсом вы можете открыть множество окон терминалов. Но это не всегда удобно. К тому же, при работе с серверами и другими системами без графического интерфейса, открыть несколько окон просто невозможно. В этой ситуации приходят на помощь такие программы как Terminator, которые позволяют в одной консоли создавать и организовывать в гибкой манере много консолей.
Функции Terminator
Установка эмулятора Terminator на Linux
На большинстве стандартных дистрибутивах Linux пакет terminator доступен в репозитории и может быть установлен с помощью менеджера управления пакетами.
На Debian/Ubuntu/Linux Mint/Kali Linux
В Debian и основанных на ней дистрибутивах вы можете с лёгкостью установить Terminator с помощью следующей команды apt:
На Arch Linux и производных
Вначале вам нужно включить репозиторий RPMForge в вашей системе и затем установить эмулятор Terminator используя команду yum как следующим образом:
Как использовать Terminator
Запускается программа так:
Откроется примерно такое окно:
Комбинации клавиш для управления Terminator
Чтобы раскрыть потенциал Terminator ключевым является знание кнопок для управления Terminator. Следующие сочетания установлены по умолчанию и являются самыми часто используемыми в Terminator:
Для разделения терминала по горизонтали – Ctrl+Shift+0
Для разделения терминала по горизонтали – Ctrl+Shift+E
У меня эти сочетания клавиш не работают, возможно по той причине, что на Ctrl+Shift назначена смена языка раскладки клавиатуры. Поэтому я использую контекстное меню:
У программы много привязанных сочетаний клавиш, которые быстро выполняют распространённые действия, но проблема в том, что у меня они не работают. Поскольку Ctrl+Shift является распространённым сочетанием для смены языка раскладки клавиатуры, то я не считаю это своей проблемой — это вопрос к создателям программы.
Я рассмотрю только те сочетания кнопок, которые сработали у меня. С другими вы можете познакомиться по ссылке ниже в документации к программе.
Для изменения фокуса терминала, нажмите Alt+ стрелку ←↑→↓
Для перехода по кругу между терминалами: Ctrl+Tab
Вы можете перетаскивать терминалы для изменения их расположения.
Имеется полноэкранные режим, который включается и отключается кнопкой F11.
Вы можете увеличивать размер шрифта (зумировать) и уменьшать содержимое в терминале. Для этого зажмите Ctrl и прокручивайте колёсико мыши.
Для сброса до исходного состояния нажмите Ctrl+0.
Вы можете установить имя для окон — для этого дважды кликните на строку красного цвета.
У программы есть конфигурационный файл, подробности о котором вы узнаете в:
Заключение
Программа в целом оставила странное впечатление — богатый функционал завязан на сочетания клавиш, которые у многих пользователей не будут работать.
Документация довольно неполная, например, из всего прочитанного (на сайте и в man), я так и не смог понять, что это за клавиша Super и как вообще менять настройки сочетаний клавиш. Если вы поклонник этой программы, пожалуйста, дополните статью вашими знаниями в комментариях.
Если у вас похожие проблемы с Terminator, то обратите внимание на tmux.
Покоряй и Властвуй: Советы по работе в терминале. Часть 9
Если вы просматривали мой конфигурационный файл из прошлого номера, вы наверняка обратили внимание на следую-щие две строки в конце файла:
Другой очень удобной воз-можностью Screen является разделение сессий несколькими пользователями. Это полезно в случае, если вы редактируете какой-то текст, и вам нужна помощь другого человека. Вы можете разрешить ему подклю-читься по SSH к машине и разделить Screen-сессию с вами. Для этого вы, как хозяин, должны сделать следующее:
Ctrl+a —это комбинация клавиш, после нажатия которой нужно написать «:multiuser on». Также вам понадобится разрешить удалённому пользователю присоединиться к Screen-сессии:
Замените на имя удалённого пользователя, с которым он будет подключаться к Screen. После того, как вы всё сделаете, он сможет присоеди-ниться к сессии, выполнив следующую команду:
Последняя возможность программы, о которой я собирался рассказать, это способность разделять окно Screen надвое. Это значит, что вы можете запустить две командные оболочки парал-лельно, каждая на своей половине экрана, одна над другой. Без дополнительного вмешательства Screen может разделять окна только по горизонтали; есть патч, который позволяет включить вертикальное разделение, но в этом случае придётся самостоя-тельно собирать Screen из исходных кодов. Чтобы задей-ствовать горизонтальное разделение окна, нажмите следующую комбинацию клавиш:
C-a S
Для тех, кто не читал предыдущей статьи, поясню, что в данном случае сначала надо нажать Ctrl+a, а затем S (Shift+s). Это приведёт к разделению окна пополам, и активное окно займёт нижнюю половину. Между получив-шимися половинами можно переключаться с помощью следующей комбинации:
Здесь обозначает клавишу табуляции. Для тех, кто хочет задействовать верти-кальное разделение окна, я приведу ссылку на инструкцию в разделе «Читайте также».
Заключительная команда для Screen:
Краткая шпаргалка по tmux (менеджеру терминалов)
Очень хороший способ запустить tmux:
tmux attach || tmux new — делая так, вы сперва пытаетесь подключиться к уже существующему серверу tmux, если он существует; если такого ещё нет — создаёте новый.
После этого вы попадаете в полноценную консоль.
Ctrl+b d — отключиться. (Точно так же вы отключитесь, если прервётся соединение. Как подключиться обратно и продолжить работу — см. выше.)
В одной сессии может быть сколько угодно окошек:
Ctrl+b c — создать окошко;
Ctrl+b 0. 9 — перейти в такое-то окошко;
Ctrl+b p — перейти в предыдущее окошко;
Ctrl+b n — перейти в следующее окошко;
Ctrl+b l — перейти в предыдущее активное окошко (из которого вы переключились в текущее);
Ctrl+b & — закрыть окошко (а можно просто набрать exit в терминале).
В одном окошке может быть много панелей:
Ctrl+b % — разделить текущую панель на две, по вертикали;
Ctrl+b « — разделить текущую панель на две, по горизонтали (это кавычка, которая около Enter, а не Shift+2);
Ctrl+b →←↑↓ — переходить между панелями;
Ctrl+b x — закрыть панель (а можно просто набрать exit в терминале).
Недостаток — непривычным становится скроллинг:
Ctrl+b PgUp — вход в «режим копирования», после чего:
PgUp, PgDown — скроллинг;
q — выход из «режима копирования».