Byobu vs. GNU Screen vs. tmux - przydatność i możliwości przenoszenia umiejętności [zamknięte]


95

Do tej pory korzystałem z Konsoli do zarządzania wieloma sesjami powłoki, ale nie próbowałem Byobu , GNU Screen i tmux , które oferują lepszą obsługę wielu powłok. Wszystkie mają jedną wspólną cechę, którą jest umożliwienie odłączenia bieżącej sesji, a następnie ponownego przyłączenia do tej starej sesji.

Aby pomóc mi wybrać narzędzie do nauki, chciałbym wiedzieć: czym różnią się pod następującymi względami?

  1. Funkcje (oczywiście)
  2. Dojrzałość projektu. Nie chcę uczyć się narzędzia, które zmienia się za bardzo. Ulepszenia są mile widziane, ale nie lubię niespodzianek, takich jak znikające funkcje.
  3. Krzywa uczenia się
  4. Dostępność na różnych platformach. Jeśli nauczę się narzędzia, chciałbym móc używać go na serwerze FreeBSD, komputerze SuSE lub Ubuntu.
  5. Zgodność z innymi interaktywnymi programami powłoki. Czy nadal mogę używać vimi emacs -nw(tryb inny niż okno lub tryb tekstowy) w taki sam sposób, w jaki jestem przyzwyczajony? Czy skróty klawiaturowe będą kolidować ze skrótami innych narzędzi?

Właśnie wypróbowałem je wszystkie i Byobu wygląda jak rodzaj interfejsu dla GNU Screen i tmux. Dlaczego więc ktoś stworzył Byobu zamiast współtworzyć projekt ekranowy GNU i dodawać nowe funkcje? Dlaczego Byobu nie jest rodzajem zaawansowanego trybu interfejsu na ekranie GNU? Jeśli używam Byobu jako mojego codziennego narzędzia z ekranem GNU jako backendem, czy mogę przenieść tę wiedzę, aby korzystać z ekranu GNU bez Byobu, jeśli określona maszyna ma tylko ekran GNU?


1
Komentując moje pytanie. Po opublikowaniu zobaczyłem, ile razy każdy znacznik był używany w StackExchange: gnu-screen: 199 razy tmux: 125 razy byobu: 18 razy Czy to znaczy, że byobu wciąż nie jest popularny? Czy to byobu jest tak intuicyjne, że nikt nie ma pytań, jak go używać?
Keitai

1
Ponieważ byobujest to tylko rozwidlenie screenz dodatkowymi funkcjami, więc gnu-screentag ma zastosowanie.
grawitacja

2
Zgodnie z dokumentacją ( manpages.ubuntu.com/manpages/precise/en/man1/byobu.1.html ) domyślną konfiguracją Byobu jest użycie tmux jako domyślnego zaplecza. Jeśli byobu jest rozwidleniem ekranu GNU, czy to znaczy, że Tmux jest lepszy niż ekran GNU?
Keitai

1
Co ciekawe, nie wiedziałem, że teraz obsługuje tmux, chociaż pozostaje tylko skryptem otoki - najwyraźniej nawet widelcem. Ale tak, tmux jest pod pewnymi względami lepszy niż Screen (przynajmniej tak twierdzą ich FAQ ).
grawitacja

22
Byobu nie jest widelcem niczego! Jest to warstwa na wierzchu Screen i Tmux, podobnie jak Gnome / KDE jest warstwą na Xorg.
Dustin Kirkland

Odpowiedzi:


32

Dla Tmux vs GNU Screen przeczytaj

oraz kilka innych wcieleń porównawczych, które można znaleźć na blogach i tym podobne.

Niektóre ogólne warunki, które są często powtarzane:

  • Tmux jest nowszy. Oznacza to, że jest nieco bardziej wyrafinowany (proste pionowe dzielenie, ładne zielone linie) i nieco gorzej przetestowany pod kątem np. Kompatybilności (w niewielkim stopniu według jego zwolenników).
  • Tmux opiera się na zasobach.
  • GNU Screen znajduje się wszędzie i najprawdopodobniej jest jeszcze częściej używany.

Oprócz tego można spojrzeć na określone funkcje dla jednej lub drugiej alternatywy, a osobiste preferencje zdominują dyskusję. Ja osobiście intensywnie korzystałem z GNU Screen - teraz używam Tmux.

Nie znalazłem dla Byobu żadnych „zabójczych funkcji” dla mnie. Zapewnia abstrakcję, w której moim zdaniem nie jest potrzebna dla moich przypadków użycia.


Innym sposobem spojrzenia na to jest zauważenie, że Byobu może używać albo GNU Screen lub Tmux jako backendu, co pokazuje, że różnice w stosunku do POV użytkownika są w większości powierzchowne.


268

Świetne pytanie! Za to, co jest warte, jestem autorem i opiekunem Byobu .

Byobu to warstwa konfiguracyjna, pierwotnie napisana, aby siedzieć na ekranie GNU , ale teraz działa również na Tmuxie .

Zacząłem pisać Byobu w grudniu 2008 roku , kiedy spotkałem się z grupą użytkowników Screen i Ubuntu Server w Googleplex i odkryłem, że wszyscy utrzymywaliśmy własny zestaw schludnych / zabawnych / przydatnych hacków w naszych ~/.screenrckonfiguracjach. Musieliśmy ręcznie przenosić je między dziesiątki lub setki używanych przez nas serwerów. Zaczęliśmy handlować wskazówkami i sztuczkami, a ja zacząłem gromadzić je w oryginalnym projekcie GPLv3 o nazwie „profile-ekranu”. Około 6 miesięcy później cała społeczność rozwinęła się wokół „ profili ekranowych ”, a projekt stał się czymś więcej niż tylko hackami ekranowymi - mieliśmy narzędzia konfiguracyjne, wtyczki statusu na żywo i skróty klawiszowe. Dlatego zmieniliśmy nazwę projektu „Byobu”, czyli japońskie słowo określające te eleganckie, składane „ekrany”, i ma tę dodatkową zaletę, że jest w stanie z powodzeniem korzystać z Google dla „Byobu $ FOO” niż „Screen $ FOO”.

Dzięki Byobu teraz w większości dystrybucji Linuksa ( Ubuntu , Debian , Fedora , Arch ) i działającym na większości komputerów Mac / BSD i innych UNIX-ów, daje to samo wrażenie, wygodne klawisze i dynamiczne informacje o stanie systemu na dowolnym terminalu potrzebujesz dostępu.

Dlaczego nie wesprzeć projektu GNU Screen? Kilka powodów ... Wszystko, co działa Byobu, a także opcje konfiguracji. Żadne z tych elementów nie musi być zawarte w bazie ekranu, aby było funkcjonalne. Niektóre rzeczy mogą działać lepiej lub działać lepiej, jeśli Screen je domyślnie uwzględni, ale wiele zmian jest bardzo „opiniotwórczych”, co zwykle jest trudne lub niemożliwe do wniesienia do 25-letniego projektu upstream. Ponadto projekt GNU Screen porusza się bardzo wolno, jeśli w ogóle. Ma ponad 25 lat i od sierpnia 2008 roku nie ma oficjalnego wydania . Każda dystrybucja zawiera ogromne stosy łatek, aby Twój / usr / bin / screen działał i był bezpieczny. np. Ubuntu i Debian przenoszą obecnie 19 000 wierszy kodu w ~ 48łaty .

Dowiedziałem się o Tmuxie około 2 lata temu i naprawdę zakochałem się w kodzie źródłowym, projekcie, interfejsie i aktywnej społeczności! O wiele łatwiej mi było wnoszenie poprawek do Tmuxa i omawianie tematów na liście mailingowej. Jako użytkownik Byobu, który używa go wszędzie, chciałem, aby moje sesje Tmux wyglądały tak samo, jak te, które podobały mi się przez ponad 4 lata Byobu. Więc przeniosłem cały kod Byobu, aby działał równie dobrze z Tmuxem jako backendem, jak Screen. Począwszy od wydania Byobu 5.0 , Tmux jest teraz domyślnym backendem, a Screen nadal jest obsługiwany w starszym trybie. Byobu wykorzystuje teraz wiele nowoczesnych funkcji Tmux na ekranie, w tym znacznie ulepszoną obsługę 256 kolorów, znaki UTF8 oraz podział okien w poziomie / pionie.

Jeśli jesteś zadowolony z domyślnych ustawień Screen lub Tmux, lub chcesz pisać własne pliki konfiguracyjne od zera, to na pewno Screen i Tmux to fantastyczne narzędzia, które dodały wiele lat wydajności w naszym życiu. Jeśli interesuje Cię zestaw konfiguracji, które naprawdę rozciągają i rozszerzają to, co robi Screen i Tmux po wyjęciu z pudełka, spójrz na Byobu!

Pozdrawiam, Dustin


16
Dobre wytłumaczenie. Zadziwiające, że ekran jest tak mocno załatany - czy potrzebuje nowego opiekuna czy coś takiego? A byobu jest świetne - dzięki.
nealmcb

10
Chciałbym móc dwukrotnie głosować. Używam byobu od lat i dopiero niedawno dowiedziałem się o złożoności, przed którą ukrywa mnie on przez cały ten czas.
Jamie Cook

2
Zawsze używam CTRL+` as escape. With screen` i tmuxdziała to jak urok, ale nie z byobu(Debian 7.1 Wheezy).
Tino

1
Teraz, gdy screenma nowego opiekuna i wydaje się, że rozwój nabrał tempa, czy coś się zmienia?
muru

Czy te wyrażone domyślnie wartości domyślne nie mogą być młodszym projektem tmux? Wygląda na to, że w odpowiedzi brakuje akapitu „Dlaczego nie wnieść wkładu do projektu tmux?” xkcd.com/927
user2707671

12

Z rzeczywistego przypadku użycia, największa różnica między screeni tmuxto w jaki sposób obsługiwać one podzielone okna.

Okno w screento pojedynczy pseudo-terminal. Po dołączeniu do screensesji możesz podzielić terminal na wiele regionów, z których każdy może wyświetlać screenokno. Wiele regionów może wyświetlać to samo okno. Podziały nie są częścią sesji; jeśli się odłączysz, twoje podziały znikną.

Okno tmuxskłada się z jednego lub więcej pseudo-terminali, po jednym na okienko. Oznacza to, że panele będą się utrzymywać, jeśli później odłączysz i ponownie połączysz. Oznacza to również, że możesz wyświetlać tylko jedno okno na raz tmux, a panele nie mogą być współużytkowane przez wiele okien. tmuxnie pozwalają okno dzielony pomiędzy wielu sesjach, jakkolwiek.

Wolę model używany przez tmux, ale nie mogę argumentować, że jest lepszy niż model używany przez screen.


3
Argumentem pro tmuxjest Deutsche Bahn . Jedź szybkim pociągiem, spróbuj przepracować sshpołączenie mobilne, a szybko zobaczysz, że tmuxmodel jest o wiele lepszy, ponieważ po jednej z częstych przerw w połączeniu nie musisz ponownie ustawiać wszystkich paneli na swoim jumphost po ponownym zalogowaniu. SCNR
Tino

3
jeśli masz do czynienia z częstymi rozłączeniami, sugeruję zajrzeć w mosh, który może automatycznie odzyskać utracony sygnał, w przeciwieństwie dossh
Ciprian Tomoiagă

4

Dla mnie przełomem dla tmux była implementacja udostępniania sesji.

W GNU Screen, jeśli pozwalasz innemu użytkownikowi połączyć się z sesją lub po prostu masz sesję podłączoną do więcej niż jednego terminala, mogą one działać niezależnie (przełączanie ekranów w sesji A z terminala B nie powoduje przełączania ekranów w sesja A).

Powyższe nie ma miejsca w przypadku tmux (jeszcze?) Lub nie byłem jeszcze w stanie znaleźć sposobu na zmianę zachowania.

Jeśli ktoś zna sposób na zmianę tego zachowania w tmux lub jeśli tmux aktualizuje się, aby zmienić to zachowanie lub dać opcję zmiany tego zachowania, zostaw komentarz.


6
tmuxma pojęcie „połączonych” sesji z new-session -t shared. Okna z „udostępnionego” pojawiają się w nowej sesji, nowe okna w jednym pojawiają się w drugim, a zamknięcie okna w jednym zamyka je w drugim. Jednak okno, które widzi każdy klient, jest specyficzne dla faktycznej sesji, którą dołącza.
chepner
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.