tmux vs. ekran


262

GNU Screen'i tekrar kullanmak üzereyim ama insanların bazen tmux'tan daha iyi bir alternatif olarak bahsettiğini duydum . Gerçekten , farklı pencerelerde aktivite izleme vb. Gibi Ekran özelliklerinin bir alternatifi sunuyor mu? Her birinin avantajları ve dezavantajları nelerdir?



2
Ekranda screen -S automate_me -X stuff 'command'$(echo -ne '\015')tmux'ta yapabileceğiniz komutları ekli bir oturuma gönderebilirsiniz . Virtualbox ISO / görüntüsünü test ediyorsanız ve bazı komutları uzaktan hızlı bir şekilde yapmanız gerekiyorsa oldukça kullanışlıdır. Örneğin, bir Sanal Kutu ekranındaki komut dosyalarını hızlı bir şekilde hata ayıklamak için bir Vim komutuna sahibim. Tmux'un önceki sürümlerinde, bu ekranın tmux'un düştüğü hızlı bir şekilde geçen daha fazla metni işlediğini gördüm. Ayrıca ekran UTF-8 vb. İle ilgili herhangi bir konfigürasyon gerektirmez.
dezza

Does tmuxidare historydüzgün?
beroe

Yanıtlar:


170

Tercihim (majör) nedenlerinden bazıları tmuxüzerinde screen:

  • Durum çubuğunu kullanmak çok daha kolaydır. Geçerli pencere, etkinliğe sahip pencereler, vb. İçin farklı metin / stilleri kolayca ayarlayabilir ve belirli bir aralıkta çalıştırılabilen kabuk komutları dahil olmak üzere durum çubuğunun soluna ve sağına şeyler koyabilirsiniz (varsayılan 15s).
  • İçeride çalıştırabileceğiniz hemen hemen her komut tmuxbir kabuğundan çalıştırılabilir tmux command [args]. Bu, karmaşık komutları kolayca yapmanın yanı sıra, kolayca komut dosyası yazılmasını sağlar.
  • Çok daha doğru otomatik pencere yeniden adlandırma. screenBaşlığı komutun ilk kelimesine göre ayarlar ve bir kabuk penceresinde yapmak için kabuk konfigürasyonuna ihtiyaç duyarken tmux, her pencerede gerçekte hangi işlemlerin çalıştığını izler ve başlığı buna göre günceller. Bu şekilde, herhangi bir kabuk ve sıfır yapılandırma ile dinamik yeniden adlandırma elde edersiniz. Örneğin: Diyelim ki Z Shell kullanıyorsunuz; pencerenin adı "zsh" olur. Şimdi bazı yapılandırma dosyalarını düzenlemek istediğinizi varsayalım sudo emacs /etc/somefile. Sudo şifrenizi sorarken, pencerenin adı "sudo" olacaktır, ancak bir kere girip sudobaşlattığınızda emacs, başlık "emacs" olacaktır. İşin bittiğinde ve çıkıncaemacs, başlık "zsh" olarak değişecektir. Bu, pencereleri takip etmek için oldukça kullanışlıdır ve ayrıca belirli durumlarda, ara sıra sizden giriş yapmanızı isteyen başka bir pencerede uzun süredir devam eden bir işleminiz varsa dialog; Bu olduğunda pencere adı "diyalog" olarak değişecekti, bu yüzden o pencereye geçip bir şey yapman gerektiğini biliyordun.
  • Daha güzel oturum yönetimi (IMHO). Kendi içindeki oturumlarla daha fazlasını yapabilirsiniz tmux. Kolayca geçiş yapabilir, yeniden adlandırabilir vb. Yapabilir ve pencereleri oturumlar arasında taşıyabilir ve paylaşabilirsiniz. Ayrıca, her kullanıcının oturumlarını kontrol eden ve müşterinin bağlandığı bir sunucuya sahip olduğu farklı bir modeli vardır. Bunun dezavantajı, eğer sunucu çökerse, her şeyi kaybedersiniz; Yine de, sunucu benim üzerime çökmedi.
  • tmuxdaha aktif olarak gelişmiş görünüyor. Çok sık güncellemeler var ve bu SSS'ye göre bir hata raporu veya özellik isteği sunabilir ve birkaç gün içinde bir yanıt alabilirsiniz.

Bunlar sadece hemen akla gelen en önemli şeylerdir. Başka küçük şeyler de var ve bazı şeyleri unuttuğuma eminim. Yine de, tmuxdenemek için kesinlikle değer .


151
tmux geliştirme daha aktif çünkü yeni . GNU Ekranı neredeyse 25 yaşında , bu yüzden böceklerin çoğunu düzelttiler.
ücretli bir inek

8
ücretli bir ineğin yorumu son noktanızın çok önemli bir niteliğidir. Belirtildiği gibi ikinci nokta, daha spesifik olamadığınız sürece, ekran için de geçerli olduğu gibi bir fark değildir.
jw013

14
@
sjas,

11
@apaidnerd çok zengin bir ifadedir: savannah.gnu.org/bugs/…
Błażej Michalik

93

( Oturum derlemeleridir pencerelerin müstakil ve daha sonra tekrar takılabilir., Windows bir veya daha fazla içerebilir bölmeleri . Örnek yapılandırmasında için check out burada ve burada .)

tmux

  • Artıları
    • Bir IDE gibi diğer bölmelere anahtar gönderebilir
    • Kolay tuş bağlama - doğru yapılandırma ile evde Vim veya Ekrandan hissedeceksiniz
    • Vim-ish ve Emacs-ish ciltleri
    • İyi düzen yönetimi, fayans pencere yöneticisi gibi
    • Unicode, sadece modern terminallerle Çalışıyor gibi görünüyor
    • Bazı terminal sorunları ile giderildi TERM=tmux
  • Eksileri
    • Yavaş - Emin neden, ama tuş vuruşları laggy görünüyor yavaşlık Artık sorunları
    • Çoklama tüm oturum genişliğini ve yüksekliğini en küçük bağlı terminale zorlar
    • Tüm oturumu kaybedip Mac OS X'te birden çok kez çöktü
    • Yükseltmeden sonra Linux'ta başarısız oldu, eski oturumuma tekrar bağlanamadım
    • Bazen komut tuş vuruşlarını özlüyor - ^A ^[kopyalama modunda birkaç deneme alıyor
    • Başka bir pencereden bir bölmeyi taşınamaz ile Sabit join-panekomuta
    • Terminal genişlik değişikliğinden (pencere yeniden boyutlandırma) sonra çizgi açmadan (veya "yeniden akıt" veya "yeniden sar")

GNU Ekranı

  • Artıları
    • Son derece kararlı (v1.0 1987’de)
    • Bazı terminal sorunları ile giderildi TERM=screen
    • Emacs-ish ciltleri
    • Yatay bölmeleri taşımak ve kontrol etmek kolaydır
    • Çoklama yaparken, takılı herhangi bir terminal bir bölmeyi yeniden boyutlandırabilir
  • Eksileri
    • Yama olmadan dikey bölme yok (Ubuntu hariç)
    • Ayırırken bölme bölmeleri kayboluyor
    • Unicode'un işe yaraması biraz incelik ve kararlılık gerektirir
    • Çılgın durum satırı yapılandırması

Gürültülü tuş vuruşları yalnızca Esc tuşuna basıldığında mı? tmux'un bir xterm dizisine mi, yoksa yalnız bir Esc'ye mi girdiğinizi görmek için bekleyeceği bir gecikme var ve vimin ile birlikte oldukça çılgınca görünebilir. Kaçış süresini 50 gibi daha düşük bir değere ayarlayın.
Eevee

^A ^[Bazen işe yaramadığını söylemek komik . Ekranda da aynı problem var ama asla tmux! Ben de camları hareket ettirebileceğine inanıyorum join-pane.
Eevee

Ekranın bir dezavantaj olarak dahil edilebilecek çok daha fazla bellek kullandığını biliyorum.
paradroid,

6
Eh, bazı durumlarda (benimki gibi), hiçbir yerde işe yarayan hiçbir çözüm olmadığından tmuxberbat bir vimşey ve benim sorunumun çözülmesi için zaman harcayan insanlar bile yapamadılar. Kullanmadığınız zaman Sinir bozucu <C-Left>ve <C-Right>de vim.
yo'

3
No vertical splits without patch (except on Ubuntu)Bunun doğru olduğunu sanmıyorum. Birkaç yıldır ekranı kullanıyorum ve Debian ve Fedora'da yatay ya da dikey olarak bölünmüş hiçbir sorun yaşamadım. Termux ile Android'de bile bir cazibe gibi çalışır.
Forivin

11

Ekran için bir profesyonel: Linux ve Solaris'te kullanıma hazır bir ürün. Platformlar arasında ileri geri geçiş yapmanız gerektiğinde, zihinsel bağlam anahtarına sahip olmamak güzeldir.

Tmux'u herhangi bir platformda derleyebildiğinize eminim, ancak bazen ekranı kullanmak için yalnızca yeterli yetkiye sahip olursunuz, ancak gerçek sistem yöneticileri gerçekten kesinlikle gerekli olmayan herhangi bir yazılım eklemek istemiyorlar.


10

Yaklaşık 2 gündür tmux kullanıyorum, bu yüzden dizginsiz coşkum henüz can sıkıcı durumlardan etkilenerek temperlenmedi. Bir programdan diğerine geçişin olağan büyüme ağrılarından geçerken, birçok olumlu özelliğe çarptım, ancak bir daha asla ekrana geri dönmeyeceğime inanmamı sağlayan özellik kopyala-yapıştır modunun yararı. Ekranda, kopyalama moduna giremezsiniz, arabellekte geri kaydırın ve sonra başka bir pencereye gidin. Tmux'ta, kopyalama modunda aynı anda birden fazla pencereye sahip olabilirsiniz, arabellek geri farklı konumlara kaydırılır. Ayrıca, birden çok kopya arabelleği var. Ve fFtT imleç hareketi elde etmek için kaynağa yama yapmanız gerekmez.


8

Ekrandan kolayca çıkamadığım tmux'lardan aldığım şeyler:

  1. dikey bölme bölmelerini yapmak
  2. uzak ve yerel eşleştirme için kullandığımız çoğullama.


Daha önce belirtildiği gibi, ekran dikey bölmelere sahiptir (görünüşe göre Ubuntu olmayan bir yama gerektirir). Ayrıca, çoklama iyi çalışıyor ve uzun yıllar boyunca var.
EntangledLoops,

düşey bölmeler screen2014 yılında piyasaya sürülen 4.2'den bu yana ana hatlardadır. Birçok dağıtım , özellikle Apple olmak üzere çok eski sürümleri sunmaktadır.
Neal Fultz

2
Her iki nokta da yanlış.
Forivin

2
Cevap 2018’de doğru değil
Alec Istomin

5

Seri portlara bağlanmak için bir HyperTerminal eşdeğerine ihtiyacım olduğunda, biri hariç her kullanım durumunda GNU Ekranını tmux ile değiştirdim . Aaron Toponce'in "GNU Ekranıyla Seri Boş Modemlere Bağlanma" adlı makalesinde de belirtildiği gibi , tmux SSS :

ekran yerleşik seri ve telnet desteği vardır; bu şişirilmiş ve tmux'a eklenmemiş olması muhtemel.

Tipik tmux kullanım durumum , tmuxinator ile birlikte çok bölmeli ve çok pencereli geliştirme oturumları oluşturmak . Eğer tmux öğrenmek istiyorsan , Brian P. Hogan'ın kitabını almanı öneririm, tmux: Üretken Fare Serbest Geliştirme .


cu Başka bir sistemi aradığını biliyor musunuz ? Seri daha tty'den simplier ekranında , ancak ışık ve kullanışlı!
F. Hauri

2

Uzun zamandır yoğun bir Screen kullanıcısı oldum, ancak 2002'de değiştirdiğim bir sürümünü kullanıyorum. Çoğunlukla, gezinme sırasına göre "sonraki / önceki" penceresinin yeni olduğu sırayla eşleşmesini istediğim için istedim. pencereler, i3 veya Ion gibi bir döşeme penceresi yöneticisine benzer şekilde oluşturuldu . Standart Ekran davranışı 'sonraki' ve 'önceki' için pencere numarasına göredir, bu nedenle genellikle 'yeni' bir pencere (mevcut olan en küçük sayıyı kaplayan) 'sonraki' pencereden başka bir yere yerleştirilir - yapmazsanız kafa karıştırıcıdır. Numaraları hatırlamıyorum. Tercih ettiğim davranış o zamandan beri Tmux’ta 2010’da yeni pencere komutuna ve 2012’de yeniden numaralandırma pencerelerine bayrak olarak uygulandı.. Belgelendirme ekleri ve diğerleri de dahil olmak üzere mümkün olduğunca kabul etmeye çalıştığım Screen yamam, Temmuz 2002'de Screen listesinde herhangi bir tartışma yapmadı (daha sonra "screen@informatik.uni-erlangen.de", arşiv bulmak). Aslında, bir yıl sonra tekrar gönderdiğimde bile onaylanmadı.

2002'den beri, ekranın daha yeni sürümlerine uygulamak için düzeltme ekimi birkaç kez "yeniden yapıyorum". Ancak, 4.3 sürümüne (2015) ulaştığımda, ekran kullanımlarımdan birini bozan belgesiz bir değişiklik olduğunu fark ettim - yani 'şeyler' şu anda çevre değişkenleriyle iç içe geçiyor . Bu özelliğe ihtiyacım olmadı ve argümandan 'eşyalara' kolayca nasıl kaçabileceğimi bulamadım (böylece dolar işareti içeren metinler gönderebildim) bu yüzden 4.0 sürümünü kullanmaya devam ettim (2004'ten itibaren).

Ekranın 'eşyalarını' (Tmux'ta 'send-keys'), geçerli Emac bölgesi içeriğini belirli bir pencere numarasına gönderen bir Emacs işlevinde kullanırım. Bu şekilde bir kodlama dilinde kod yazarken, bir tercüman açarım, tercüman penceresine özel bir sayı veririm ve sonra bu Emacs bağlamasını kullanarak editör penceremden doğrudan tercüman penceresine kod satırları gönderebilirim. Zorlu ama saf Emacs çözümünden daha çok hoşlanıyorum , çünkü standart tuş vuruşlarını kullanarak Tercüman ile Ekran penceresindeki etkileşimde bulunabiliyorum. Biraz GUI IDE'ye benziyor, ancak fareyi kullanmam veya yanıp sönen bir imlece bakmam gerekmiyor.

Düzeltme ekimde uyguladığım bir diğer özellik, bir pencereyi "işaretleme" ve ardından işaretlenmiş pencereyi geçerli pencereden sonra "sonraki" olacak şekilde yeniden konumlandırma yeteneğidir. Benim için bu, pencereleri yeniden sıralamaktan daha doğal bir yöntemdir; kopyala / yapıştır paradigması veya "sürükle ve bırak" gibidir. ( Son zamanlarda bunun i3'te nasıl yapıldığını da çözdüm .)

Aynı şeyi Tmux'da da yapmak mümkün olmalı, örneğin 2015'ten itibaren bir bölmeyi "işaretlemek" için bir tesis var. Veya belki de daha temel bir çözüm, durumsal kabuk senaryoları ile çözülebilir. "İşaretli bölme" yöntemini denemek için kısa bir komut dosyası ve anahtar kelimeler kullandım ve birkaç kez işe yaradı, ancak Tmux "[kayıp sunucu]" ile düştü. Sonra Tmux’un karmaşık bir şey yapmaya çalışmadan bile çökmesini sağladım. Görünüşe göre , bazı kullanıcılar için en azından birkaç yıldır çöküyor . Bazen sunucu çöküyor, bazen CPU'nun% 100'ünü kullanmaya başlıyor ve yanıt vermiyor. Bunların ikisini de Screen'i hiç görmedim.

Teoride, Tmux birçok açıdan Ekrandan üstündür. Komut satırından Windows listesini sorgulamak gibi şeyleri yapabileceğiniz anlamına gelen çok daha iyi bir komut dosyası yazılabilirliğine sahiptir; bu, Ekran ile imkansızdır. Örneğin, 2015 Ekranı'nda "pencereleri başlığa göre sıralamak" için bir komut eklendi . Böyle özel bir komutun ne zaman faydalı olacağından emin değilim, ancak bu ve daha pratik varyasyonlar (örn. CPU kullanımı ile sıralama pencereleri) Tmux'taki bir kabuk betiğinden nispeten kolayca yapılabilir. Bana göre en azından C kodunu değiştirmeden Ekranda çok yaratıcı bir şey yapmak zor gözüküyor.

Diğer afişlerde de belirtildiği gibi, Tmux, özellikle sunucu kilitlenirken birincil dezavantaj olarak gördüğüm tek sunucu modeline sahiptir. Her "oturum" için ayrı bir soket belirleyerek bu sorunu çözmek mümkündür. Yine de Screen'in oturum başına bir sunucu varsayılanını tercih ediyorum, bu biraz daha şık görünüyor.

2002 yılında, Ekran kodu ile çalışmak benim için eğitici ve zevkliydi. İşin garibi, tüm ek özellikleri için, Tmux'un Ekrandan% 30 daha az kod satırı var (30k - 40k). Tmux’un birçok ağaç kullandığını ve veri yapılarını listelediğini fark ettim, bu benim için biraz zordu. Ekran dizileri tercih ediyor gibiydi.

Anladığım kadarıyla, Unix terminal arayüzü çok kararlı olduğundan, temel işletim sistemindeki değişikliklere uyum sağlamak için Ekran veya Tmux koduna çok az ihtiyaç vardır. Bu programlar gerçekten web tarayıcıları veya web sunucuları veya hatta kabuk gibi güvenlik güncellemelerine sahip değildir. Ekranımın özel sürümünü çalıştırırken, en son 2004’de güncellenen herhangi bir sorun fark etmedim ( Systemd’in soketi silmesini engellemek için bazı yapılandırma dosyaları eklememe gerekliliği dışında); Bu dosyalar genellikle zaten dağıtım paketinin bir parçasıdır). Belki de çökmeye başlamadan önceki Tmux sürümünü çalıştırarak Tmux'ta karşılaştığım sorunları çözebilirdim. Tabii ki, eğer yeterince kullanıcı bunu yaparsa, yeni kullanıcılar için çok iyi olmayacak, çünkü bu programların en son resmi sürümlerinde daha az uzmanın hata arayacağı anlamına geliyor. Ancak benim için dengesiz olan (en son Tmux) veya istediğim bazı özelliklere sahip olmayan (standart Ekran) bir ürüne geçmem için kendimi motive etmek zor.

Bunun OP'nin sorusuna kolay bir cevap vermediğini biliyorum, ancak bakış açımın yararlı olduğunu umuyorum.


2

Tmux 'un işletmecilerinden biri olan Thomas Adam, sadece tmux koduna dokunmasına rağmen , proje için bakıcı olarak listelenmiştirscreen . Bu ekran üzerinde tmux'un büyük bir yanlısı.


1

Ekranın kullanılabilirliğinin gücü olduğunu söyleyebilirim, ancak pencere sistemi kadar kolay değil . Şu anda çoğu zaman kullandığımı söylemeliyim ve bunun sonucunda Ekran pencereleri yerine birçok terminal sekmesine sahip oldum .

@Jed Schneider: Ctrl+ Ave sonra |(dikey çubuk) ile dikey bölme bölmelerini alabilirsiniz .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.