Byobu vs. GNU Screen vs. tmux - полезность и переносимость навыков [закрыто]

95

До сих пор я использовал 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?

Keitai
источник
1
Комментируя свой вопрос. После публикации я только что увидел, сколько раз каждый тег использовался в StackExchange: gnu-screen: 199 раз tmux: 125 раз byobu: 18 раз Означает ли это, что byobu все еще не популярен? Или это Бёбу настолько интуитивно понятно, что ни у кого не возникает вопросов, как его использовать?
Кейтай
1
Потому что byobuэто просто вилка screenс дополнительными функциями, поэтому gnu-screenтег применяется.
grawity
2
Согласно документации ( manpages.ubuntu.com/manpages/precise/en/man1/byobu.1.html ) конфигурация по умолчанию в Byobu заключается в использовании tmux в качестве бэкэнда по умолчанию. Если byobu - это форк экрана gnu, значит ли это, что tmux лучше, чем экран gnu?
Кейтай
1
Интересно, что я не знал, что теперь он поддерживает tmux, хотя он остается всего лишь сценарием-оберткой - даже не форком. Но да, tmux в некотором смысле лучше, чем Screen (по крайней мере, их FAQ так утверждает).
Гравитация
22
Бёбу не является развилкой! Это слой поверх Screen и Tmux, аналогично тому, как Gnome / KDE является слоем поверх Xorg.
Дастин Киркланд

Ответы:

32

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

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

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

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

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

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


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

Даниэль Андерссон
источник
268

Отличный вопрос! Для чего это стоит, я автор и сопровождающий 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!

Ура, Дастин

Дастин Киркланд
источник
16
Хорошее объяснение. Удивительно, что экран так сильно залатан - нужен новый сопровождающий или что-то еще? И Бёбу это здорово - спасибо.
nealmcb
10
Я хотел бы проголосовать дважды. Я использую byobu в течение многих лет и только недавно узнала о сложности, которую он скрывал от меня все это время.
Джейми Кук
2
Я всегда использую CTRL+` as escape. With screen`, и tmuxэто работает как шарм, но не с byobu(Debian 7.1 Wheezy).
Тино
1
Теперь, screenкогда появился новый сопровождающий, и разработка, кажется, набрала обороты, что-то меняется?
Муру
Могут ли эти неуверенные значения по умолчанию сделать его более молодым проектом tmux? Кажется, в ответе отсутствует параграф «Почему бы не внести свой вклад в проект tmux?» xkcd.com/927
user2707671
12

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

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

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

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

chepner
источник
3
Аргумент "за" tmux- это Deutsche Bahn . Поезжайте на скоростном поезде, попробуйте поработать sshс помощью мобильного соединения, и вы быстро увидите, что tmuxмодель намного лучше, потому что после одного из частых разрывов соединения вам не нужно переупорядочивать все панели на вашем Jumphost после повторной регистрации. ГКНР
Тино
3
если вы столкнулись с частыми отсоединений, я предлагаю смотреть в Mosh , который может восстановить автоматически из потерянного сигнала, в отличие отssh
Киприан Tomoiagă
4

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

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

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

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

therealklanni
источник
6
tmuxимеет понятие «связанных» сессий с new-session -t shared. Окна «общего доступа» появляются в новом сеансе, новые окна в одном появляются в другом, а закрытие окна в одном закрывает его в другом. Однако то, какое окно видит каждый клиент, зависит от конкретного сеанса, к которому он присоединяется.
chepner