- ИТ База знаний
- Полезно
- Навигация
- Серверные решения
- Телефония
- Корпоративные сети
- Как пользоваться утилитой screen в Linux?
- Немножко теории
- Установка screen в Linux
- Установка screen в Ubuntu и Debian
- Установка screen в CentOS и Fedora
- Запуск screen в Linux
- Сессия screen с именем
- Как правильно работать с окнами в Windows
- Выход из screen сессии
- Возврат к screen сессии
- Немножко кастомизации screen под вас
- Типовой сценарий использования screen
- Выводы
- Команда screen Linux
- Установка утилиты screen
- Основы работы команды screen
- Возможности программы
- Основные команды screen
- Как пользоваться screen Linux
- Выводы
- Команда screen
- Евгений Боздаганян
- Евгений Боздаганян
- Subscribe to Записки на полях
ИТ База знаний
Курс по Asterisk
Полезно
— Узнать IP — адрес компьютера в интернете
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Калькулятор инсталляции IP — АТС Asterisk
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
Как пользоваться утилитой screen в Linux?
Окно в «новую жизнь»
Сейчас вы точно прочувствуете важное команды screen . Бывало ли у вас такое, что вы выполняете (очень долго) команду в консоли — CLI на удаленной машине, будучи подключенным через SSH? Команда долго выполняется и близится к завершению как вдруг пропадает подключение, рвется SSH подключение и все, что вы делали — пропало?
Мини — курс по виртуализации
Знакомство с VMware vSphere 7 и технологией виртуализации в авторском мини — курсе от Михаила Якобсена
Прости, что напомнили. Знаем, это болезненно. Что же, вытрем слезы. Для этих ситуаций есть команда screen о которой мы и поговорим.
Немножко теории
Так называемый screen это терминальный мультиплексор (нас тоже пугает это слово). Другими словами, оно дает нам возможность внутри действующей сессии открыть сколько угодно много виртуальных окон/терминалов. Что важно — процесс, запущенный внутри сессии через screen, будет продолжаться даже тогда, когда вы отключитесь от самой первой сессии.
Установка screen в Linux
Вообще, пакет screen предустановлен на большинстве современных Linux — дистров. Проверить можно командой:
Если случилось так, что у вас его нет — это можно быстро исправить простой установкой.
Установка screen в Ubuntu и Debian
Установка screen в CentOS и Fedora
Запуск screen в Linux
Чтобы запустить screen в консоли, просто наберите screen . Что может быть проще, не правда ли?
У вас откроется новая сессия в новом окне. Уже здесь вы можете вводить все нужные shell команды. Находясь в режиме скрина (screen) вы можете посмотреть список доступных вам команд управления этим режимом. Вот так:
Если не получается нажать указанную выше комбинацию, можно поступить проще: нажмите отдельно Ctrl+a , отпустите, а затем в консоль наберите ? и нажмите Enter
Сессия screen с именем
Ну очень удобная фича. Если вы делаете несколько процессов параллельно, просто обзовите их так, чтобы потом понять, что и где выполняется. Синтаксис такой:
Например, вы можете запустить ping — замер хоста с 1С и назвать сессию так:
Всегда используйте скрин именно так. Будет значительно удобнее.
Как правильно работать с окнами в 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. Узнать его просто с помощью команды:
Вывод этой команды будет выглядеть вот так:
В выводе выше мы выделили ID — сессий. Например, чтобы вернуться к сессии 32328 (pings_towards_1C), дайте команду:
Немножко кастомизации screen под вас
Когда screen запускается, он считывает свои конфигурационные параметры из /etc/screenrc и
/.screenrc , если файл присутствует. Так вот — мы можем легко перенастроить предпочтения использования screen и сделать это в файле .screenrc .
Посмотрите пример с комментариями, как мы закастомили screen для себя:
Типовой сценарий использования screen
Общий случай, так сказать. Обычно он состоит из следующих шагов:
- После SSH подключения к серверу, набираем screen ;
- Запускаем интересующую нас команду в режиме screen — сессии;
- Выполняем команду Ctrl + a и d , чтобы выйти из режима работы с экран-сессией
- Через какое-то время возвращаемся к запущенному ранее экрану командой screen -r
Выводы
Мы разобрались, как создавать screen сессии, управлять ими внутри, открывая новые окна, выходить из их режима управления (без прекращения выполнения команды), делить горизонтально и вертикально экраны.
Ах да, ещё мы научились кастомизировать screen под себя. Профит!
Мини — курс по виртуализации
Знакомство с VMware vSphere 7 и технологией виртуализации в авторском мини — курсе от Михаила Якобсена
Источник
Команда screen Linux
Эффективность администрирования систем GNU/Linux напрямую зависит от используемых утилит. Возможность выполнять максимум задач в минимальный срок — приоритетная цель этого процесса. Команда screen Linux является одним из основных инструментов системного администратора.
По умолчанию screen не является стандартной утилитой в большинстве дистрибутивов, но работает везде одинаково. Поэтому сначала рассмотрим её инсталляцию, а затем — возможности и основные команды.
Установка утилиты screen
Разница в инсталляции программы на разных дистрибутивах заключается в программах управления пакетами и их командами.
Чтобы установить screen в Ubuntu, Linux Mint, Deepin и других систем семейства Debian, используйте команду apt:
sudo apt install screen
В Manjaro, Antergos и других Arch-подобных ОС screen располагается в AUR, поэтому используйте соответствующую программу управления пакетами, например aurman:
aurman -S screen
Для инсталляции screen в системах на основе Red Hat (например Fedora и CentOS) используйте утилиту dnf:
dnf install screen
Основы работы команды screen
Принцип работы GNU/Linux в целом заключается в использовании небольших утилит, которые делают что-то одно, но хорошо. И эта программа — не исключение.
Команда screen Linux является консольной программой и имеет однозначное определение, соответствующее названию, — это оконный менеджер, разделяющий один физический терминал между несколькими процессами. Подходит для прямого либо удалённого администрирования.
Возможности программы
Screen позволяет переключаться между терминалами, в которых выполняются процессы, не прерывая их. Это особенно эффективно, когда необходимо производить сборку/установку ПО и мониторить дисковое пространство или использовать аппаратные ресурсы.
Screen может разделять текущий терминал на меньшее количество окон с возможностью запуска в них того же или других терминалов. Это ещё больше упрощает вышеописанную задачу, особенно при использовании больших мониторов.
Также к одной сессии screen может подключаться несколько пользователей. Это эффективно при обучении персонала.
Основные команды screen
Откройте терминал. Для запуска первого окна наберите:—
Создастся новая сессия программы и появится приветственное сообщение. Для его закрытия нужно нажать Space или Enter.
Все управляющие команды начинаются с комбинации клавиш Ctrl + a, затем следует буква или сочетание клавиш. Буквы разных регистров выполняют разные команды. Также сочетания можно заменять текстом. Для его ввода нажмите Ctrl + a и :, после чего вводите текст.
Например, чтобы создать новое окно, нажмите по очереди сочетание Ctrl + a и затем c. Для просмотра списка созданных окон нажмите Ctrl + a и w.
Для перехода в любое из созданных окон сессии используется комбинация Ctrl + a и номер, который за ним закреплён, или Ctrl + a и «, после чего нужно выбрать стрелками необходимое. Для последовательного перехода используйте Ctrl + a и n (следующее окно) или p (предыдущее окно).
Чтобы разделить экран по горизонтали, нажмите Ctrl + a и S. Например, для разделения окна по горизонтали напишите split.
Будет создано новое окно снизу от текущего, и оно не становится активным. Чтобы разделить по вертикали, нажмите Ctrl + a и | (или введите split -v).
Были созданы новые пустые окна. Для переключения между ними используйте Ctrl + a и Tab (или напишите focus). Положение курсора указывает, какое окно является активным в данный момент. Для скрытия окна используйте Ctrl + a и X (или введите remove).
Чтобы запустить в новом окне терминал, нажмите Ctr + a и c (или наберите screen).
Чтобы скрыть все окна и оставить только текущее, используйте Ctrl + a и Q (или напишите only).
Переименовать окно можно с помощью Ctrl + a и A. Внизу появится строка с возможностью заменить старое название.
Чтобы скрыть все окна сессии, нажмите Ctrl + a и \. Подтвердите решение нажатием y. Для выхода из менеджера окон нажмите Ctrl + a и d.
Команда screen обладает большим набором горячих клавиш. Полный их список можно посмотреть с помощью Ctrl + a и ?.
При создании новой сессии screen можно задать ей имя. Таким образом можно создать несколько сессий. Чтобы сделать это, используйте параметр -S, после которого укажите название.
screen -S name-of-screen
Посмотреть список запущенных сессий можно командой
Строка, идентифицирующая сессию, состоит из нескольких полей: id, название и статус.
Значение id отображается в списке всех запущенных процессов. Это означает, что его можно завершить с помощью команды kill. Завершить работу текущего окна можно с помощью комбинации Ctrl+a и k; подтвердите решение нажатием y.
Статус может иметь два состояния: Attached (задействован) и Detached (незадействован). Второе состояние у сессий, в которых ещё не происходили никакие процессы.
Чтобы перейти в нужную сессию, следует указать параметру -r её id или название.
Это всё основные команды screen Linux.
Как пользоваться screen Linux
Теперь давайте рассмотрим, как пользоваться screen Linux более подробно.
Пример 1. Необходимо отслеживать изменения файла в реальном времени. Для этого в одном окне будем вносить изменения в новый файл, а в другом — отображать файл командой tail с опцией -f:
При стирании содержимого показывается сообщение, что файл усечён, при этом этот текст в него, конечно, не записывается.
Пример 2. Необходимо отслеживать размер каталога в реальном времени. В одном окне записываем данные, в другом — отображаем, как изменяется размер домашнего каталога командой watch с задержкой в две секунды.
Выводы
Команда screen является эффективным инструментом для системного администрирования, особенно при работе с системой без среды рабочего стола. Имея один терминал, вы можете создавать несколько окон для обработки параллельных процессов без конфликтов между ними.
Источник
Команда screen
Команда screen, как и когда следует ее использовать, примеры и немного теории
Евгений Боздаганян
Read more posts by this author.
Евгений Боздаганян
Расскажу, пожалуй, еще об одной очень нужной и полезной, с моей точки зрения, команде, которая сильно облегчает жизнь при удаленной работе с устройствами под управлением Linux . Речь пойдет о screen .
Немного о том, как состоялось мое знакомство с этой командой. В то время я только начинал осваивать удаленное управление моими домашними железками, работающими под управлением Linux — сервером на базе нетбука Toshiba и двумя домашними сетевыми накопителями семейства MyBookLive . Громкое определение «управление» сводилось, как правило, к подкладыванию torrent файлов демону transmission и копированием уже скачанных этим демоном файлов на домашние NAS-ы. Казалось бы, что может быть проще: вошел по SSH на сервер и, при помощи midnight commander или scp , копируешь нужные файлы. На самом деле, в этих несложных, в общем-то, манипуляциях, меня поджидало две неприятности.
Первая была чисто техническая: на моем сервере, работающем под Debian Wheezy , а потом Jessie , что-то было не так с сетевыми драйверами. Точнее, я подозреваю, что драйвера были лишь частью проблемы; свою лепту, скорее всего, вносили еще BarracudaDrive (теперь это FuguHub ) и VPN сервер, работающие на сервере. А может, и само железо было не без изьяна, хотя.
Суть неприятности, собственно, заключалась в том, что сетевое соединение, неважно, проводное или WiFi (именно поэтому в вину hardware верилось с трудом — обычно «глючит» что-то одно), в какой-то момент просто отваливалось. Причем, предсказать и объяснить «отваливание» было довольно сложно, но одно можно было утверждать смело: под нагрузкой оно происходило чаще, и WiFi, как ни странно, обладал большей надежностью, нежели витая пара. Надо признаться, что причин этой проблемы я так и не выявил, чему немало способствовали факты непредсказуемости и редкости ее возникновения (с WiFi это случалось от нескольких раз в месяц до пары раз в полгода), а потому, воспроизвести ее по требованию было просто невозможно. Как результат, если такое случалось, я просто переподключал WiFi на нетбуке, или, если был в это время, например, на работе, просил это сделать своих домочадцев.
Вторая проблема заключалась, скажем так, в моих особенностях, как пользователя. Эти особенности находят свое отражение, в частности, в том, что я не очень-то жалую командную строку и, где только возможно, пытаюсь использовать различные оболочки. В случае с копированием больших файлов это приводит к драматическим потерям времени: кто пробовал копировать файлы между устройствами при помощи midnight commander , тот понимает, что я имею в виду. И, хотя, как говорят, есть три вещи, на которые можно смотреть бесконечно: как бежит вода, как танцует пламя и как движется ползунок, отображающий процесс скачивания торрента (с чем я, в принципе, согласен), но смотреть на процесс копирования файлов в midnight commander , особенно ту его часть, которая связана не с ползунком, а с отсчетом скопированных и проверенных байт. Раздражение — это самая безобидная эмоция, посещавшая меня в такие моменты, и, кроме того, всегда возникало жгучее желание именно в это время занятся чем-то другим, более полезным, чем просто ожидание.
К сожалению, проблемы имеют такое нехорошее свойство — сходиться вместе. Когда это (отваливание сети) происходит в конце копирования большого файла при помощи midnight commander , то просто хочется рвать и метать — разрыв связи означает прерывание SSH соединения, и, как следствие, необходимости копировать файл по новой. Чтобы обезопасить себя от таких нежелательных последствий, я решил поискать какой-нибудь способ, который бы позволил завершиться производимому действию, вне зависимости от того, активно ли SSH соединение, или нет.
Для меня было ясно, что надо копать в сторону использования другого потока, сессии и так далее. И первым опробованным решением было фоновое копирование в самом midnight commander . Не буду сейчас подробно рассказывать все перепетии этого процесса, отмечу лишь, что довольно быстро я осознал необходимость продолжения поиска более приемлемого решения. И оно было найдено — команда screen .
Что же это за зверь такой? Всезнающая wiki дает на этот вопрос немного непонятный ответ: консольный мультиплексор. Но если почитать дальше, то становится понятным употребление термина «мультиплексор» — речь идет о возможности использовать в одном терминальном окне нескольких виртуальных консолей, с такой дополнительной функциональностью, как «отсоединение» и “воссоединение» сессий. Если отвлечься от высокой теории, и опуститься на землю, то, на практике, это все означает, что можно одновременно использовать несколько консольных приложений, а также, что можно разорвать связь между запущенным консольным приложением и сессией, это приложение запустившей. Как результат, можно закрыть удаленное соединение, а запущенные приложения продолжат свою работу. А это именно то, что мне требовалось! Ну а теперь по порядку — что, да как.
Начнем с того, что эта утилита может быть изначально установлена в вашей системе, но, в моем случае ( Debian Wheezy ), пришлось ставить ее самостоятельно
Не стоит забывать, что при установке надо иметь права «суперпользователя». Так, если вспомнить команду su , то команду на установку можно записать примерно так:
С результатом можно ознакомиться на скриншоте:
После установки можно сразу начать использовать эту утилиту. Причем, для этого совершенно не надо обладать правами администратора системы. Простейший способ запустить команду — просто набрать в командной строке screen . В результате выполнения этой команды будет создана сессия screen и в этой сессии — новая виртуальная консоль . При этом, она займет окно терминала полностью и в ней отобразится лицензионная информация о самой screen .
Все, что вы будете делать, все программы и команды, которые вы будете запускать — все будет работать в этой виртуальной консоли (и, соответственно, в сессии screen ). Наверное, единственным исключением является сама команда screen — будучи запущенной в виртуальной консоли без параметров, она создаст новую виртуальную консоль в той же сессии screen .
Что делать, если вы захотите завершить работу виртуальной консоли? Как это часто бывает, для этого можно использовать команду exit . При этом, если вы закрываете последнюю используемую виртуальную консоль сессии (в нашем примере так и есть), то закрыта будет и сама сессия
Надо сказать, что в таком режиме использовать screen вроде как нет никакого смысла — ну что такого особенного в том, чтобы открыть, немного поработать и закрыть виртуальную консоль. Может оно и так, но если вы, скажем, работаете удаленно, и произошло что-то нехорошее, например, обрыв связи, то сессия screen все равно останется «жива»! И в нее можно будет вернуться после восстановления соединения! Но об этом — чуть позже. Сейчас продолжим играться с самой командой screen .
Попробуем запустить в такой консоли какой-нибудь долгоиграющий процесс, а самим вернуться в терминальное окно, и продолжить заниматься обычными каждодневными делами. Как это сделать? Да проще некуда. Давайте снова запустим screen и выполним в нем, например, такую команду:
Нет, я, конечно, мог предложить действительно скачать какой-нибудь большой файл, например:
Но оно вам надо? Нужно место на диске, потом удалять файл. ping значительно «безобиднее».
ping , запущенный без параметров, выполняется до тех пор, пока вы его не прервете при помощи, скажем, комбинации клавиш Ctrl+C . А до тех пор, вы обречены наблюдать время отклика «пингуемого» сайта. Но, не в этот раз. Хотя, конечно, возникает вопрос: а что, собственно, и, главное, как — можно сделать? Куда вводить команды? На самом деле, все довольно просто — командой screen можно управлять при помощи специальных комбинаций клавиш.
Для перехода в режим управления screen используется комбинация клавиш Ctrl+A . Набирается она следующим образом: нажимается и удерживается клавиша Ctrl , нажимается клавиша А (не в смысле «заглавная буква А» а просто клавиша, обозначенная как английская буква A ), клавиши отпускаются. После этого оказывается включен режим управления командой screen и следующая нажатая (и отпущенная) клавиша приведет к выполнению какого-нибудь действия. Например, если после ввода комбинации Ctrl+A нажать клавишу ? (в дальнейшем, такие комбинации будем записывать так: Ctrl+A ? ), то будет выведен экран помощи по команде screen .
Давайте внимательно посмотрим на этот экран и запомним несколько комбинаций, скажем, Ctrl+A c (эта комбинация помечена, как screen ), Ctrl+A n (помечена, как next ), Ctrl+A p (помечена, как prev ) и Ctrl+A w (помечена, как windows ). Запомнили? Теперь, давайте немного поэксперементируем. И начнем, пожалуй, с комбинации Ctrl+A c — просто задействуем ее, пока на экране нашей виртуальной консоли все бежит и бежит результат отклика сервера DNS от Google ( 8.8.8.8 — это один из серверов Google). Если все сделано правильно, вы должны увидеть перед собой пустую консоль, в которой можно ввести какую-нибудь команду. Это вторая созданная нами виртуальная консоль screen , причем работает она в той же сессии, что и первая. Такого же эффекта мы бы добились, если бы в командной строке виртуальной консоли выполнили команду screen (конечно, если бы могли воспользоваться командной строкой).
Что бы нам такое сделать с этой второй виртуальной консолью? Не будем оригинальничать и «запингуем» другой DNS сервер от Google — 8.8.4.4 :
Теперь мы знаем время отклика и от этого сервера Google. Но, стоп! А это время лучше или хуже? Для ответа на этот вопрос внимательно смотрим на время отклика от 8.8.4.4 , запоминаем его, после чего применяем комбинацию Ctrl+A p .
Если вам кажется, что ничего не изменилось, то либо вы чуточку невнимательны, либо вы не совсем правильно воспользовались управляющей комбинацией клавиш. Если же эти предположения к вам не относятся, то, присмотревшись, вы увидите, что теперь перед вами время отклика от сервера 8.8.8.8 ! То есть, комбинация клавиш Ctrl+A p вернула нас в предыдущую виртуальную консоль screen . Ну что, сравнили время отклика? Нет? Забыли? Не беда, воспользуемся управляющей комбинацией Ctrl+A n и освежим свою память — перед нами виртуальная консоль в результатами ping до сервера 8.8.4.4 , то есть, мы переключились на следующую виртуальную консоль screen .
Теперь посмотрим, что делает управляющая комбинация Ctrl+A w
Мы видим, что в левом нижнем углу появилось перечисление работающих виртуальных консолей: одна консоль — под логическим номером 0 , другая — под номером 1 . То есть, комбинация Ctrl+A w выводит список виртуальных консолей, которые вы успели запустить к этому моменту в сессии screen . Ну а сами логические номера консолей можно использовать для того, чтобы переключаться между ними. Для этого надо будет воспользоваться комбинацией вида Ctrl+A номер_консоли , где номер_консоли — цифры от 0 до 9, обозначающие логический номер виртуальной консоли.
Итак, мы находимся в одной из запущенных нами виртуальных консолей. Возникает вопрос: а можем мы оказаться в обычном терминальном окне, оставив при этом работать и саму сессию и ее виртуальные консоли? И ответ довольно предсказуем: да! Для этого надо отключиться от сессии, или, другими словами, отсоединиться от нее, для чего можно использовать комбинацию Ctrl+A d в любой виртуальной консоли, принадлежащей сессии. Задействовав ее, мы окажемся в обычном терминальном окне.
Надо заметить, в обычном терминальном окне управляющие комбинации команды screen не действуют. Сюрприз, не правда ли? Тем временем, у нас, где-то, работают две виртуальных консоли (в рамках запущенной сессии screen ). И что нам делать, чтобы снова, каким-то волшебным способом, к ним подключиться? К счастью, у команды screen имеется некоторый набор опций (или ключей) командной строки, часть из которых позволят нам решить нашу задачу — вернуться обратно в виртуальные консоли.
Во-первых, нам нужно посмотреть какую-нибудь информацию о запущенных сессиях команды screen . Сделать это можно при помощи команды screen -ls (допустимо использовать и более развернутый синтаксис команды — screen -list ). В ответ, нам будет выдан список запущенных сессий (или сеансов, кому как больше нравится):
По каждой сессии screen выдается следующая информация: идентификационная строка, дата/время создания сессии и ее статус. Строка-идентификатор сессии выдается в формате pid.tty.host . Она состоит из следующих элементов: pid — идентификатор запущенного процесса, tty — название терминала, host — имя хоста. Иногда, когда, например, при помощи команды screen -S имя_сессии , создаются так называемые именованные сессии (или уже существующей сессии задают/изменяют имя при помощи управляющей комбинации клавиш Ctrl+A :sessionname name ), вместо tty.host выводится имя соответствующего сеанса.
С датой и временем создания сессии вопросов возникнуть не должно. Немного по статусу (или состоянию) сессии:
- Если указано Detached , то сессия работает в «отсоединенном» режиме, то есть, отвязана от какого бы то ни было терминального окна (например, была использована управляющая комбинация клавиш Ctrl+A d ). Такие сеансы можно возобновить с помощью команды screen -r .
- Если указано Attached , то сессия работает и «привязана» к какому-то терминальному окну (такие окна иногда называют » управляющими»).
- Если сеанс работает в многопользовательском режиме, он помечается как Multi .
- Сеансы, отмеченные как Unreachable , либо «живут» на другом хосте, либо «мертвы». Недоступный сеанс считается «мертвым», когда его имя совпадает либо с именем локального хоста, либо со специальным, ранее указанным, параметром. «Мертвые» виртуальные консоли могут быть удалены при помощи команды screen -wipe , но, конечно, вы должны быть уверенными в том, что вы делаете.
Итак, мы видим, что есть «отсоединенная» сессия. Для того, чтобы вернуться в виртуальную консоль этой сессии можно использовать команду screen -r идентификатор_сессии . В качестве параметра идентификатор_сессии можно указать либо всю идентификационную строку целиком, либо ее часть. У меня получалось подключаться и по целой строке, и по значению pid , и по значению tty.host , и только по значению tty . Примеры:
Если необходимо подключиться к именованной сессии, то, в качестве еще одной альтернативы, можно указать имя нужной сессии:
При этом я заметил, что если в сессии есть несколько открытых виртуальных консолей, то возвращаешься в ту же виртуальную консоль, которая была активна на момент отсоединения от сессии при помощи, например, комбинации клавиш Ctrl+A d .
На самом деле, у screen есть масса возможностей: можно, например, разделить окно терминала между несколькими виртуальными консолями, можно не просто создать сессию, но и сразу запустить в ней нужную команду, можно даже указать, чтобы созданная сессия с запущенным приложением сразу «отсоединилась». Можно даже попытаться изменить стандартное поведение screen — для этого есть специальные файлы:
/.screenrc и /etc/screenrc . Я не буду подробно рассказывать про все эти возможности, в конце концов, можно и документацию почитать, да и в сети полно разнообразных материалов по этой теме. Но несколько примеров запуска screen я, все-таки, приведу: просто потому, что документация — документацией, это, так сказать, теория, а практика — это наглядная иллюстрация того, как можно пользоваться знаниями, полученными в результате изучения теории, и эта наглядность позволяет быстрее и проще понимать теорию, облегчая ее применение на практике. фуф.
Чуть выше я упоминал «именованные» сессии. Работать с ними довольно удобно — можно давать вполне осмысленные имена, которые и проще запомнить и, следовательно, проще использовать. Задать имя сессии можно при ее создании:
Эта команда создаст новую сессию с незамысловатым именем test .
А вот так можно сразу еще и команду какую-нибудь запустить:
В результате выполнения такой команды будет создана новая сессия screen с именем ping , и в виртуальной консоли этой сессии будет запущена команда ping 8.8.8.8 . Надо заметить, что если после такого запуска прервать выполнение команды ping , то сессия будет завершена. Если же запустить такую команду:
то будет создана новая сессия с именем ping , в виртуальной консоли которой будет запущена команда ping 8.8.8.8 и кроме всего этого — будет произведено отключение от этой сессии. Но все можно повернуть и чуть-чуть иначе:
Эта команда попробует заново подсоединиться к сессии с именем ping , а если таковой нет, то она будет создана, после чего в ней будет запущена команда ping и произведено отключение. А еще можно подключиться к сессии, которая выполняется в другом терминальном окне, для чего следует использовать ключ x :
Такое может потребоваться, например, при неожиданном обрыве связи в процессе удаленного управления. Кстати, другой пользователь, работающий под такой же учетной записью, как и вы [1] , может выполнить эту же команду и вы оба окажетесь в одной виртуальной консоли сессии screen . Получится «многопользовательская» консоль. На самом деле, можно все устроить таким образом, чтобы к виртуальной консоли мог подключиться пользователь, работающий и под другой учетной записью, но для этого надо делать специальные манипуляции.
Теперь представим, что мы очень часто выполняем команду screen и нам порядком надоело лицезреть стартовый экран. Для того, чтобы избавиться от него, надо в конфигурационный файл команды screen добавить строку:
Сделать это можно при помощи любого текстового редактора. Причем, если произвести это изменение в файле
/.screenrc (в домашнем каталоге текущего пользователя), то стартовый экран перестанет появляться при запуске screen под этим пользователем. Если же модифицировать файл /etc/screenrc , то произведенное редактирование получит статус «system wide», то есть, затронет всех пользователей системы.
Такие примеры можно продолжать приводить довольно долго. Но пора и честь знать, и так получилось довольно длинное повествование. Напоследок хочу отметить, что удаленное управление (по ssh , например) — не единственная область деятельности администратора (да и простого пользователя), когда команда screen приходит, что называется, на выручку. Можно еще вспомнить, что с ее помощью легко эмулируется режим демона, то есть, можно запускать в фоне задачи, которые не могут быть запущены в качестве демона, по причине, скажем, наличия пользовательского интерфейса. Очень часто так запускают rtorrent , например. Да и это не последняя возможность применения команды screen . Так что, дерзайте.
обратите внимание, я не пишу «под вашей учетной записью», а «под такой же учетной записью» — передавать данные своей учетной записи какому-то другому пользователю я бы не советовал, а вот пользоваться специально созданной «общей» учеткой — вполне нормально, особенно если не оставлять свои конфиденциальные данные ↩︎
Subscribe to Записки на полях
Get the latest posts delivered right to your inbox
Источник