86

До сих пор я использовал Konsole для управления несколькими сеансами оболочки, но я не пробовал Byobu, GNU Screen и tmux, которые предлагают лучшую поддержку нескольких оболочек. Все они имеют одну общую особенность, которая позволяет отсоединять текущий сеанс, а затем подключать его к этому старому сеансу.

Чтобы помочь мне выбрать инструмент для изучения, я хотел бы знать: чем они отличаются в следующих отношениях?

  1. Особенности (очевидно)
  2. Срок реализации проекта. Я не хочу изучать инструмент, который слишком сильно меняется. Улучшения приветствуются, но я не люблю сюрпризы, такие как исчезновение функций.
  3. Кривая обучения
  4. Доступность на разных платформах. Если я изучу инструмент, я бы хотел использовать его на сервере FreeBSD, на настольном компьютере SuSE или в Ubuntu.
  5. Совместимость с другими интерактивными оболочками. Могу ли я использовать vim и emacs -nw (не оконный режим или текстовый режим) так же, как я привык? Будут ли сочетания клавиш конфликтовать с другими инструментами?

Я только что попробовал все из них, и Byobu выглядит как своего рода интерфейс для GNU Screen и tmux. Тогда почему кто-то создал Byobu вместо того, чтобы вносить вклад в экранный проект GNU и добавлять новые функции? Почему Byobu не является своего рода расширенным интерфейсом в GNU Screen? Если я использую Byobu в качестве ежедневного инструмента с экраном GNU в качестве бэкэнда, могу ли я перенести эти знания на использование экрана GNU без Byobu, если на определенной машине установлен только экран GNU?

4 ответа4

247

Отличный вопрос! Для чего это стоит, я автор и сопровождающий Byobu.

Byobu - это слой конфигурации, изначально созданный для размещения поверх экрана GNU, но теперь также работающий поверх Tmux.

Я начал писать Byobu еще в декабре 2008 года, когда встретился с группой пользователей Screen и Ubuntu Server в Googleplex и обнаружил, что все мы поддерживали нашу собственную кучу полезных / забавных / полезных хаков в наших конфигурациях ~/.screenrc , И нам пришлось вручную перемещать их между десятками или сотнями серверов, которые мы использовали. Мы начали торговать советами и рекомендациями, и я начал собирать их в оригинальный проект GPLv3, который назывался «screen-profile». Примерно через 6 месяцев вокруг « экранных профилей » сформировалось целое сообщество, и проект превратился в нечто большее, чем просто экранные хаки - у нас были утилиты для настройки, плагины текущего состояния и привязки клавиш. Таким образом, мы переименовали проект "Byobu", что в переводе с японского означает эти элегантные, складывающиеся "экраны", и имеет дополнительное преимущество, заключающееся в том, что Google может более успешно использовать «Byobu $ FOO», чем «Screen $ FOO».

Благодаря тому, что Byobu теперь используется в большинстве дистрибутивов Linux (Ubuntu, Debian, Fedora, Arch) и функционирует на большинстве Mac /BSD и других UNIX, он дает такие же удобные сочетания клавиш, динамическую информацию о состоянии системы на любом терминале, который вы можете нужен доступ.

Почему бы не внести свой вклад в проект GNU Screen? Пара причин ... Все, что работает Byobu так же хорошо, как и параметры конфигурации. Ничто из этого не должно быть включено в исходную базу экрана, чтобы быть функциональным. Некоторые вещи могли бы работать лучше или работать лучше, если бы Screen включал их по умолчанию, но многие изменения очень "самоуверенные", которые обычно трудно или невозможно внести в 25-летний вышестоящий проект. Кроме того, проект GNU Screen движется очень медленно, если вообще движется. Ей более 25 лет, и с августа 2008 года она не была официально выпущена. Каждый дистрибутив содержит огромные стопки патчей, чтобы ваш /usr /bin /screen работал и был безопасным. например, Ubuntu и Debian в настоящее время несут 19K строк кода в ~ 48 патчах.

Я узнал о Tmux около 2 лет назад и по-настоящему влюбился в исходный код, дизайн, интерфейс и активное сообщество! Мне было гораздо легче вносить исправления в основной выпуск Tmux и обсуждать темы в списке рассылки. И как пользователь Byobu, который использует его повсюду, я хотел, чтобы мои сеансы Tmux выглядели и чувствовали так же, как и в 4+ годах работы с Byobu. Поэтому я перенес весь код Byobu, чтобы он одинаково хорошо работал с Tmux в качестве бэкэнда, как с Screen. Начиная с выпуска Byobu 5.0, Tmux теперь является бэкэндом по умолчанию, и Screen по-прежнему поддерживается в устаревшем режиме. Byobu теперь использует многие из современных функций Tmux over Screen, включая значительно улучшенную поддержку 256 цветов, символы UTF8 и разделение горизонтального и вертикального окон.

Если вы удовлетворены настройками по умолчанию в Screen или Tmux или хотите написать собственные файлы конфигурации с нуля, тогда Screen и Tmux - это фантастические утилиты, которые добавили многолетнюю эффективность в нашу жизнь. Если вам интересен набор конфигураций, которые действительно расширяют и расширяют возможности Screen и Tmux из коробки, взгляните на Byobu!

Ура, Дастин

27

Для Tmux vs GNU Screen читайте

и несколько других сравнительных воплощений, которые можно найти в блогах и тому подобное.

Некоторые общие термины, которые часто повторяются:

  • Tmux новее. Это означает, что он немного интереснее (простое вертикальное расщепление, красивые зеленые линии) и немного менее хорошо протестирован, например, на совместимость (в незначительной степени в соответствии с его сторонниками).
  • Tmux экономнее по ресурсам.
  • Экран GNU встречается повсеместно и, скорее всего, все еще используется.

Помимо этого, можно посмотреть на конкретные функции для той или иной альтернативы, и личные предпочтения будут доминировать в дискуссии. Лично я интенсивно использовал экран GNU - теперь я использую Tmux.

Я не нашел Byobu, чтобы иметь какие-либо "особенности убийцы" для меня. Это обеспечивает абстракцию, где я считаю, что ничего не нужно для моих вариантов использования.


Другой способ взглянуть на это - отметить, что Byobu может использовать либо GNU Screen, либо Tmux в качестве бэкэнда, что показывает, что отличия от пользовательского POV в основном поверхностны.

12

По сравнению с реальным сценарием наибольшее различие между screen и tmux заключается в том, как они обрабатывают разделенные окна.

Окно на screen - это один псевдо-терминал. При подключении к сеансу screen вы можете разделить свой терминал на несколько регионов, в каждом из которых может отображаться окно screen . Несколько регионов могут отображать одно и то же окно. Расколы не являются частью сеанса; если вы отсоединяетесь, ваши расколы исчезли.

Окно в tmux состоит из одного или нескольких псевдо-терминалов, по одному на панель. Это означает, что панели сохраняются, если вы отсоединяете их и присоединяете позже. Это также означает, что вы можете отображать только одно окно одновременно в tmux , и что панели не могут совместно использоваться несколькими окнами. tmux позволяет разделять окно между несколькими сессиями.

Я предпочитаю модель, используемую tmux , но я не могу утверждать, что она лучше, чем модель, используемая screen .

4

Для меня решающим фактором для tmux была реализация совместного использования сеансов.

В GNU Screen, если вы разрешаете другому пользователю подключаться к сеансу или просто подключаете сеанс к нескольким терминалам, они могут работать независимо (переключение экранов в сеансе A с терминала B не заставляет терминал A также переключать экраны в Сессия А).

Выше не относится к Tmux (еще?) или я еще не смог найти способ изменить поведение.

Если кто-то знает, как изменить это поведение в tmux или если tmux обновится, чтобы изменить это поведение или дать возможность изменить это поведение, оставьте комментарий.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .