Zaraz wracam do korzystania z GNU Screen , ale czasami słyszę, że ludzie wspominają tmux jako lepszą alternatywę. Czy naprawdę stanowi alternatywę dla wszystkich funkcji, które oferuje ekran , takich jak monitorowanie aktywności w różnych oknach itp.? Jakie są zalety i wady każdego z nich?
gnu-screen
tmux
Alison R.
źródło
źródło
screen -S automate_me -X stuff 'command'$(echo -ne '\015')
, ponieważ nie możesz w tmux. Bardzo przydatne, jeśli testujesz obraz ISO / obraz wirtualnej skrzynki i potrzebujesz szybko wykonać niektóre polecenia. Na przykład mam go w poleceniu Vima, aby szybko debugować skrypty na ekranie Virtualbox. We wcześniejszych wersjach tmux odkryłem, że ekran radził sobie z szybkim przechodzeniem większej ilości tekstu, podczas gdy tmux się zawieszał. Również ekran nie wymaga żadnej konfiguracji do obsługi UTF-8 itp. Tmux tego wymaga.tmux
obsługiwaćhistory
prawidłowo?Odpowiedzi:
Niektóre z przyczyn (głównych) Wolę
tmux
nadscreen
:tmux
można uruchomić z powłoki za pomocątmux command [args]
. To sprawia, że skryptowanie jest bardzo łatwe, a także wykonywanie skomplikowanych poleceń.screen
ustawia tytuł na podstawie pierwszego słowa polecenia i wymaga konfiguracji powłoki, aby zrobić to nawet w oknie powłoki,tmux
śledzi, jakie procesy faktycznie działają w każdym oknie i odpowiednio aktualizuje tytuł. W ten sposób uzyskujesz dynamiczną zmianę nazwy z dowolną konfiguracją powłoki i zerową. Na przykład: Załóżmy, że używasz Z Shell; nazwa okna to „zsh”. Powiedzmy, że chcesz edytować plik konfiguracyjny, więc piszeszsudo emacs /etc/somefile
. Podczas gdy sudo prosi o podanie hasła, nazwa okna będzie brzmiała „sudo”, ale gdy to zrobisz isudo
uruchomiszemacs
, tytuł będzie brzmiał „emacs”. Kiedy wszystko skończysz i wyjdzieszemacs
, tytuł zmieni się z powrotem na „zsh”. Jest to dość przydatne do śledzenia okien, a może być również szczególnie przydatne w określonych sytuacjach, na przykład jeśli masz jakiś długotrwały proces w innym oknie, który czasami monituje o użycie danych wejściowychdialog
; nazwa okna zmieni się wtedy na „okno dialogowe”, więc będziesz wiedział, że musisz przejść do tego okna i coś zrobić.tmux
sobie. Możesz łatwo przełączać, zmieniać nazwy itp., A także przenosić i udostępniać okna między sesjami. Ma także inny model, w którym każdy użytkownik ma serwer, który kontroluje jego sesje i do którego klient się łączy. Minusem tego jest to, że jeśli serwer ulegnie awarii, stracisz wszystko; Jednak nigdy nie miałem awarii serwera.tmux
wydaje się być bardziej aktywnie rozwijany. Aktualizacje są dość częste i możesz złożyć raport o błędzie lub żądanie funkcji zgodnie z tym FAQ i uzyskać odpowiedź w ciągu kilku dni.To tylko najważniejsze rzeczy, które od razu przychodzą mi na myśl. Są też inne małe rzeczy i jestem pewien, że zapomniałem o niektórych. Zdecydowanie warto jednak
tmux
spróbować.źródło
( Sesje to zbiory okien, które można odłączyć i ponownie podłączyć później. Windows może zawierać jeden lub więcej okien . Na przykład konfiguracje, sprawdź tutaj i tutaj .)
tmux
TERM=tmux
Powolne - nie wiem dlaczego, ale naciśnięcia klawiszy wydają się opóźnione.Nigdy więcej problemów ze spowolnieniemNie można przenieść panelu z jednego okna do drugiegoNaprawiono za pomocąjoin-pane
poleceniaEkran GNU
TERM=screen
źródło
^A ^[
czasami nie działa; Mam ten sam problem z ekranem, ale nigdy nie tmux! I wierzę, że możesz przesuwać szybyjoin-pane
.tmux
banivim
, w niektórych przypadkach (moje, mianowicie), żadne rozwiązanie nigdy nie opublikowano nigdzie działa, a nawet ludzie spędzający trochę czasu na rozwiązaniu mojego problemu nie byli w stanie. To denerwujące, gdy nie możesz używać<C-Left>
ani<C-Right>
w nimvim
.No vertical splits without patch (except on Ubuntu)
Nie sądzę, że to prawda. Używam screena od kilku lat i nigdy nie miałem żadnych problemów z podziałem poziomym lub pionowym na Debianie i Fedorze. Nawet na Androida z Termuxem działa jak urok.Profesjonalista na ekranie: jest dostępny praktycznie od razu po instalacji w systemie Linux i Solaris. Kiedy musisz przełączać się między platformami, dobrze jest nie przełączać kontekstu mentalnego.
Jestem pewien, że możesz skompilować Tmux na dowolnej platformie, ale czasami masz wystarczający dostęp do korzystania z ekranu, ale faktyczni administratorzy systemu tak naprawdę nie chcą dodawać oprogramowania, które nie jest absolutnie konieczne.
źródło
Używam Tmuxa od około 2 dni, więc mój nieokiełznany entuzjazm nie został jeszcze złagodzony poprzez trafianie w irytujące przypadki użycia. Podczas przechodzenia przez zwykłe rosnące bóle związane z przechodzeniem z jednego programu do drugiego, uderzyło mnie kilka pozytywnych funkcji, ale cechą, która mnie przekonała, że nigdy nie wrócę do ekranu, jest użyteczność trybu kopiuj-wklej. Na ekranie nie można przejść do trybu kopiowania, przewinąć do bufora, a następnie przejść do innego okna. W tmux możesz mieć wiele okien jednocześnie w trybie kopiowania z buforem przewijanym z powrotem do różnych pozycji. Ponadto istnieje wiele buforów kopii. I nie musisz łatać źródła, aby uzyskać ruch kursora fFtT.
źródło
Rzeczy, które wyciągam z tmuxa, których nie mam łatwo na ekranie, to:
źródło
-x
acladd
screen
od wersji 4.2, wydanej w 2014 roku. Wiele dystrybucji dostarcza bardzo stare wersje, zwłaszcza Apple.Wymieniłem GNU ekran z tmux w każdym przypadku użycia z wyjątkiem jednej-kiedy muszę HyperTerminal równowartość podłączyć do portów szeregowych. Jak zauważył Aaron Toponce w swoim artykule „Łączenie się z szeregowymi zerowymi modemami za pomocą ekranu GNU” , FAQ tmux brzmi:
Mój typowy przypadek użycia tmux to tworzenie wielopanelowych i wielo-okiennych sesji programistycznych w połączeniu z tmuxinatorem . Jeśli chcesz nauczyć się tmux , polecam zdobycie książki Briana P. Hogana, tmux: Productive Free-Mouse Development .
źródło
cu
Zadzwoń na inny system ? Prostszy seryjny tty niż ekran , ale lekki i użyteczny!Przez długi czas byłem intensywnym użytkownikiem Screen, ale korzystam z wersji, którą zmodyfikowałem w 2002 roku. Głównie dlatego, że chciałem, aby okno nawigacyjne „następne / poprzednie” odpowiadało kolejności, w jakiej nowe okna zostały utworzone, podobnie jak menedżer okien sąsiadujących, taki jak i3 lub Ion . Standardowe zachowanie ekranu polega na tym, że „następny” i „poprzedni” przechodzi według numeru okna, tak że zwykle „nowe” okno (chwytając najmniejszą dostępną liczbę) znajduje się gdzie indziej niż okno „następne” - mylące, jeśli nie ” pamiętam liczby. Moje preferowane zachowanie zostało zaimplementowane w Tmux jako flaga polecenia new-window w 2010 roku , a opcja renumber -windows w 2012 roku. Moja łatka do ekranu, którą starałem się uczynić możliwie akceptowalną, w tym uzupełnienia dokumentacji itp., Nie spowodowała żadnej dyskusji na liście ekranów w lipcu 2002 r. (Wtedy „[email protected]”, nie może znajdź archiwa). W rzeczywistości nie został nawet potwierdzony, nawet gdy wysłałem go ponownie rok później.
Od 2002 roku kilkakrotnie „zmieniłem” swoją łatkę, aby zastosować ją w nowszych wersjach ekranu. Kiedy jednak dotarłem do wersji 4.3 (2015), zauważyłem nieudokumentowaną zmianę, która przerwała jedno z moich zastosowań screena - mianowicie, że „rzeczy” interpolują zmienne środowiskowe . Nie potrzebowałem tej funkcji i nie mogłem wymyślić, jak łatwo uciec przed argumentem „rzeczy” (aby móc wysyłać tekst zawierający znaki dolara), więc nadal używałem wersji 4.0 (od 2004 r.).
Używam „rzeczy” Screena („klucze wysyłania” w Tmuxie) w funkcji Emacsa, która wysyła zawartość bieżącego regionu Emacsa na określony numer okna. W ten sposób, gdy piszę kod w języku skryptowym, otwieram interpretera, nadaję okno interpretera specjalny numer, a następnie mogę wysyłać wiersze kodu z okna edytora bezpośrednio do okna interpretera za pomocą tego powiązania Emacsa. Jest hacky, ale podoba mi się to bardziej niż rozwiązanie z czystym Emacsem , ponieważ mogę również wchodzić w interakcję z tłumaczem w jego oknie ekranowym za pomocą standardowych naciśnięć klawiszy. To trochę jak IDE GUI, ale nie muszę używać myszy ani patrzeć na migający kursor.
Inną funkcją, którą zaimplementowałem w mojej łatce, jest możliwość „oznaczenia” okna, a następnie przesunięcia zaznaczonego okna, aby było „następne” po bieżącym. Dla mnie jest to o wiele bardziej naturalny sposób zmiany kolejności okien niż zmiana numeracji; przypomina paradygmat kopiuj / wklej lub „przeciągnij i upuść”. ( Ostatnio wymyśliłem, jak to zrobić w i3 ).
To samo powinno być możliwe w Tmux, na przykład od 2015 r. Istnieje możliwość „oznaczania” szyby. A może można opracować bardziej elementarne rozwiązanie za pomocą stanowych skryptów powłoki. Zaimplementowałem krótki skrypt i skróty klawiszowe, aby wypróbować metodę „zaznaczonego panelu” i zadziałało kilka razy, ale potem Tmux zawiesił się z „[utraconym serwerem]”. Potem odkryłem, że Tmux ulega awarii nawet bez mojej próby zrobienia czegoś skomplikowanego. Podobno został on upaść dla niektórych użytkowników za kilka lat co najmniej . Czasami serwer ulega awarii, czasem zaczyna używać 100% procesora i przestaje odpowiadać. Nigdy nie widziałem, żeby Screen robił jedno z tych.
Teoretycznie Tmux jest lepszy od Screena na kilka sposobów. Ma znacznie lepszą skryptowalność, co oznacza, że możesz wykonywać takie czynności, jak przeszukiwanie listy okien w bieżącej sesji z wiersza poleceń, co jest niemożliwe w przypadku Screen. Na przykład w 2015 r. Screen dodał polecenie „sortuj okna według tytułu” . Nie jestem pewien, kiedy takie wyspecjalizowane polecenie byłoby przydatne, ale ta i bardziej praktyczna odmiana (np. Sortowanie okien według użycia procesora) można stosunkowo łatwo wykonać ze skryptu powłoki w Tmux. Wydaje mi się, że trudno jest zrobić coś tak kreatywnego na ekranie, przynajmniej bez modyfikacji kodu C.
Jak wspomniano w innych plakatach, Tmux ma model z jednym serwerem, który uważam za podstawową wadę, szczególnie gdy serwer ulega awarii. Można obejść ten problem, określając osobne gniazdo dla każdej „sesji”. Nadal wolę domyślny ekran dla jednego serwera na sesję, który wydaje się nieco bardziej elegancki.
Praca z kodem ekranowym w 2002 roku była dla mnie edukacyjna i przyjemna. Co dziwne, mimo wszystkich dodatkowych funkcji Tmux ma około 25% mniej wierszy kodu niż Screen (30 tys. Vs 40 tys.). Zauważyłem, że Tmux używa wielu struktur danych drzewa i list, które były dla mnie nieco trudne do zrozumienia. Wyglądało na to, że ekran woli tablice.
Jak rozumiem, ponieważ interfejs terminala w systemie Unix jest tak stabilny, nie ma potrzeby dostosowywania kodu Screen lub Tmux do zmian w podstawowym systemie operacyjnym. Te programy tak naprawdę nie mają aktualizacji zabezpieczeń, takich jak przeglądarki internetowe, serwery sieciowe, a nawet powłoka. Nie zauważyłem żadnych problemów z uruchomieniem mojej niestandardowej wersji Screen, ostatnio zaktualizowanej w 2004 roku (z wyjątkiem konieczności dodania niektórych plików konfiguracyjnych, aby zapobiec usunięciu gniazda przez Systemd; te pliki i tak są zazwyczaj częścią pakietu dystrybucyjnego). Być może mógłbym po prostu obejść problemy, które napotkałem w Tmux, uruchamiając wersję Tmux sprzed jego awarii. Oczywiście, jeśli zrobi to wystarczająca liczba użytkowników, nie będzie to dobre dla nowych użytkowników, ponieważ oznacza to, że mniej ekspertów będzie szukało błędów w najnowszych oficjalnych wersjach tych programów. Trudno jednak zmotywować się do przejścia na produkt, który jest dla mnie niestabilny (najnowszy Tmux) lub który nie ma pewnych funkcji, których chcę (standardowy ekran).
Wiem, że nie zapewnia to łatwej odpowiedzi na pytanie PO, ale mam nadzieję, że moja perspektywa była przydatna.
źródło
Jeden z opiekunów tmux, Thomas Adam, jest również wymieniony jako opiekun
screen
projektu, chociaż tylko dotyka kodu tmux. To ogromna zaleta tmuxa nad ekranem.źródło
Powiedziałbym, że dostępność ekranu jest jego siłą, ale jego system okienkowy nie jest tak łatwy w obsłudze jak tmux . Muszę powiedzieć, że obecnie używam gnu-screen i w rezultacie mam wiele zakładek terminali zamiast okien ekranu.
@Jed Schneider: Możesz uzyskać pionowe podziały szyb za pomocą Ctrl+, Aa następnie |(pionowy pasek).
źródło