Сразу признаюсь - мне досадно поздно открывать для себя screen
. Друзья и коллеги предлагали мне это в течение многих лет, но только недавно я ощутил в этом конкретную потребность. Теперь мне жаль, что у меня не было этого все время. Короче говоря, screen
дает вам эквивалент "рабочих пространств", которые вы найдете в Gnome, KDE и других средах рабочего стола, но для командной строки. Может показаться, что это не так уж много, но, как и в графическом эквиваленте, вы начинаете видеть мощность после нескольких использований. Сегодня мы собираемся осветить некоторые основы screen
, полезные для вашего домашнего рабочего стола, но особенно полезные, если вы используете инструменты удаленного доступа, такие как SSH.
Обзор
Допустим, вы находитесь в командной строке и выполняете длительный процесс, например перекомпиляцию ядра. На некоторых машинах это может занять до часа. Обычный пользователь может сидеть и ждать. Умный пользователь может выполнить задание в фоновом режиме или использовать функциональные клавиши, чтобы открыть новый логин TTY. Однако пользователь экрана уже задумался. Если бы screen был запущен первым (или автоматически - подробнее об этом позже), этот пользователь просто нажал бы правильную комбинацию клавиш, чтобы создать новую оболочку. И еще, и еще по желанию. Каждый из них работает независимо от других, и весь вывод останется на соответствующем сеансе screen.
Некоторые из вас, кто любит использовать метод Alt + Ctrl + (F1 - F4), могут задаться вопросом, чем screen
лучше. На самом деле причин несколько, некоторые из которых:
- Не ограничивается количеством функциональных клавиш
- Возможность назвать каждый экран
- Возможность отключать / повторно подключать сеансы экрана
- "Строка состояния" поддержка
- Многопользовательские общие экраны
- Разделенные экраны
НАМНОГО больше.
Начиная
Поскольку экран включен почти во все основные дистрибутивы Linux, в этом руководстве не рассматривается установка. Самый простой способ запустить экран - просто открыть терминал и ввести
экран
Вы можете получить экран приветствия, но в противном случае вы можете не заметить ничего другого. Это просто похоже на обычный терминал, не так ли?
На самом деле вы видите сеанс экрана по умолчанию, и вы можете думать о нем как о слое над вашей оболочкой. Если вы выйдете из сеанса или отключите его, вы вернетесь в обычную безэкранную оболочку.
Добавление экранов и навигация по ним
Для начала вам нужно знать одну важную комбинацию клавиш. Это "волшебная" комбинация клавиш, которая позволяет получить доступ ко всем отдельным командам. Что это за волшебное сочетание? Ctrl + A. Например, Ctrl + A, за которым следует c, создаст новый экран. Ctrl + A и n переместятся на следующий экран в строке (если он существует). Ниже перечислены многие из наиболее распространенных клавиш действий (все клавиши чувствительны к регистру):
- c - Создать новый экран
- n - перейти к следующему экрану
- p - переход к предыдущему экрану
- S - разделить экран на сложенные области
- | - Разделить на соседние регионы (может работать не на всех системах)
- d - Отключить экран
- A - Установить заголовок экрана
Присоединение / отсоединение экранов
Несмотря на то, что у screen есть много отличных применений, эту функцию можно было бы назвать "хлеб с маслом" экрана. Неоценима возможность отсоединить экран, оставив его включенным, а затем снова поднять его.
Допустим, вы запускали сервер Minecraft с прошлой недели, и он работает на старом компьютере под вашей кроватью. Обычно, если вы хотите, скажем, вводить команды на консоли сервера, вам нужно вытащить машину, вытащить клавиатуру и монитор, выполнить свои команды и вернуть все обратно. Если бы серверное программное обеспечение было запущено в сеансе экрана, вы можете просто подключиться к серверу по SSH, повторно подключить экран и делать то, что вам нужно. По завершении отсоедините экран, и сервер продолжит работу даже после закрытия сеанса SSH. Через несколько дней / недель / месяцев вы можете снова войти на сервер и повторно подключить этот экран для ввода новых команд.
.screenrc
Наконец, мы не могли охватить screen без хотя бы краткого упоминания файла "~ / .screenrc". У этого файла много разных применений, но, поскольку это вводное руководство, мы не будем рассматривать все возможные варианты. Вместо этого мы просто укажем на любимую настройку жесткого статуса.
Эта опция дает вам фантастически полезную информационную панель, которая будет сохраняться во всех сеансах screen. Обычно он размещается внизу и содержит такую информацию, как время, имя хоста и заголовок / номер текущего экрана.
Вы можете найти примеры кодов состояния по всей сети с помощью предпочитаемой вами поисковой системы, но вот несколько, которые помогут вам начать работу.
# 1
hardstatus alwayslastlinehardstatus string '% {=kG} [% {G}% H% {g}] [%=% {=kw}%? % -Lw%?% {R} (% {W}% n *% f% t%? (% U)%?% {R})% {w}%?% + Lw%?%?%=% {g}] [% {B}% d /% m% {W}% c% {g}] '
# 2
hardstatus alwayslastlinehardstatus string "% {+ b Rk} (% {- bg} $ LOGNAME @% H% {+ b R}) (% {- bg}% C% a% {+ b R})% {- bg}% n% t% h "
# 3
hardstatus alwayslastlinehardstatus string '% {=M}% H% {=G}% l%=% {=w}% - w% {+ br}% n *% t% {- br}% {w}% + w%=% {c}% d% D% {B}% c '
4 комментария
Комментарии закрыты.
:-) ваша # 3 возможность отключать / повторно подключать сеансы экрана
является для меня самым важным: раньше у меня было очень плохое соединение, и мое ssh-соединение регулярно прерывалось, что было проблемой в ** - использование экрана позволяет мне просто возобновить!
Это, безусловно, моя любимая вещь, я использую экран для управления SSH на моем сервере Minecraft, и это избавило меня от множества головных болей. Я запускаю сервер внутри сеанса экрана из INIT, так что сервер запускается при загрузке, но я могу повторно подключиться по SSH для управления. Чертовски удобно=)
Спасибо, это здорово :-)
(является)