題 Byobu與GNU Screen vs. tmux - 技能的有用性和可轉移性[關閉]


到目前為止我已經習慣了 的Konsole 管理多個shell會話但我還沒試過 屏風GNU屏幕,和 TMUX,為多殼提供更好的支持。它們共享一個主要功能,即允許分離當前會話並稍後重新連接到舊會話。

為了幫助我選擇一個學習工具,我想知道:它們在以下方面有何不同?

  1. 特點(顯然)
  2. 項目成熟度。我不想學習一個變化太大的工具。歡迎增強,但我不喜歡消失功能等驚喜。
  3. 學習曲線
  4. 在不同平台上的可用性如果我學習了一個工具,我希望能夠在FreeBSD服務器,SuSE桌面或Ubuntu上使用它。
  5. 與其他交互式shell程序的兼容性。我還能用嗎? vim 和 emacs -nw (非窗口模式,或文本模式)與我習慣的方式相同?鍵盤快捷鍵是否會與其他工具衝突?

我只是嘗試了所有這些,而Byobu看起來像GNU Screen和tmux的前端。那麼為什麼有人創建Byobu而不是貢獻GNU屏幕項目並添加新功能?為什麼Byobu在GNU Screen中不是某種高級接口模式?如果我使用Byobu作為我的日常工具,使用GNU屏幕作為後端,如果某台機器只有GNU Screen,我可以將這些知識轉移到使用沒有Byobu的GNU Screen嗎?


81
2018-05-11 12:32


起源


評論我自己的問題。發布後,我剛看到StackExchange中每個標籤的使用次數:gnu-screen:199次tmux:125次byobu:18次這是否意味著byobu仍然不受歡迎?或者說byobu是如此直觀,沒有人對如何使用它有任何疑問? - Keitai
因為 byobu 只是一個分叉 screen 有額外的功能,所以 gnu-screen 標籤適用。 - grawity
根據文件(manpages.ubuntu.com/manpages/precise/en/man1/byobu.1.html)Byobu的默認配置是使用tmux作為默認後端。如果byobu是gnu屏幕的分支,這是否意味著tmux比gnu屏幕好? - Keitai
有趣的是,我不知道它現在支持tmux,雖然它仍然只是一個包裝腳本 - 顯然不是一個分支。但是,是的,tmux在某些方面比Screen更好(至少 他們的FAQ 聲稱如此)。 - grawity
Byobu不是任何東西!它是Screen和Tmux之上的一層,類似於Gorg頂部的Gnome / KDE。 - Dustin Kirkland


答案:


對於Tmux與GNU Screen,請閱讀

以及可以在博客等上找到的其他幾種比較化身。

一些重複的一般術語:

  • Tmux比較新。這意味著它有點發燒友(簡單的垂直分割,漂亮的綠線)和一點點不太好的測試,例如兼容性(根據其支持者可忽略不計)。
  • Tmux的資源更精簡。
  • GNU Screen隨處可見,很可能更常用。

除此之外,人們可以看一個或另一個替代方案的具體功能,個人偏好將主導討論。我個人過去經常使用GNU Screen - 現在我使用Tmux。

我沒有發現Byobu對我有任何“殺手鐧”。它提供了一個抽象,我相信我的用例不需要它。


另一種看待它的方法是注意Byobu可以使用GNU Screen或Tmux作為後端,這表明與用戶POV的差異大多是膚淺的。


26
2018-05-11 13:07





好問題! 對於它的價值,我是作者和維護者 屏風

屏風 是一個配置層,最初編寫為坐在上面 GNU屏幕,但現在也在上面工作 TMUX

我開始寫Byobu了 2008年12月,因為我遇到了一堆Screen和Ubuntu Server用戶 Googleplex的 並發現了 所有 我們在我們的網站中維護著一堆整潔/有趣/有用的黑客 ~/.screenrc 配置。我們不得不在我們使用的數十台或數百台服務器之間手動移動它們。我們開始交易提示和技巧,我開始將它們收集到原始版本中 GPLv3的 項目稱為“屏幕配置文件”。大約6個月後,整個社區圍繞“屏幕配置文件“而且這個項目不僅僅是屏幕黑客 - 我們有配置工具,實時狀態插件和鍵綁定。所以我們 重命名該項目 “Byobu”,這是一個日語單詞,用於那些優雅的折疊“屏幕”,並且還有一個額外的好處是能夠比“Screen $ FOO”更成功地使用Google“Byobu $ FOO”。

現在在大多數Linux發行版中使用Byobu(Ubuntu的Debian的Fedora的),並且在大多數Mac / BSD和其他UNIX上運行,它在您可能需要訪問的任何終端上提供相同的外觀,方便的鍵綁定,動態系統狀態信息。

為什麼不回饋GNU Screen項目?有幾個原因......所有Byobu的工作原理和配置選項一樣。沒有 需求 要包含在屏幕源代碼庫中以實現功能。如果屏幕默認包含它們,某些內容可能會更好或更好用,但許多更改都非常“自以為是”,這通常很難或不可能對 25歲的 上游項目。此外,如果有的話,GNU Screen項目的移動速度非常慢。它已有25年以上的歷史,並且自那時起還沒有正式發布 2008年8月。每個發行版都帶有大量的補丁,只是為了讓你的/ usr / bin / screen保持正常運行。例如,Ubuntu和Debian目前在~48中攜帶19K行代碼 補丁

大約兩年前我了解了Tmux,並且真的愛上了源代碼,設計,界面和活躍的社區!我有一個更輕鬆的時間 貢獻修復 到上游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!

乾杯, 達斯汀


241
2018-05-11 15:51



很好的解釋。令人驚訝的是,屏幕是如此嚴重修補 - 它需要一個新的維護者或什麼?而byobu很棒 - 謝謝。 - nealmcb
我希望我可以兩次投票。我已經使用了byobu多年了,並且剛剛才知道它一直隱藏著我的複雜性。 - Jamie Cook
我總是用 CTRL+` as escape. With 屏幕`和 tmux 這就像一個魅力,但不是 byobu(Debian 7.1 Wheezy)。 - Tino
現在 screen 有一個新的維護者和開發似乎已經發揮了作用,做事情改變了嗎? - muru
難道那些自以為是的默認值會使它成為更年輕的tmux項目嗎?似乎答案缺少一個段落“為什麼不回饋tmux項目?” xkcd.com/927 - user2707671


從實際用例來看,最大的區別 screen 和 tmux 是他們如何處理分裂窗口。

一個窗口 screen 是一個偽終端。當附加到 screen 會話中,您可以將終端分成多個區域,每個區域都可以顯示一個 screen 窗口。多個區域可以顯示相同的窗口。分裂不是會話的一部分;如果你分開,你的分裂就會消失。

一個窗口 tmux 由一個或多個偽終端組成,每個窗格一個。這意味著如果您稍後分離並重新連接,窗格仍然存在。這也意味著您一次只能顯示一個窗口 tmux,並且窗格不能在多個窗口之間共享。 tmux 不 允許 但是,要在多個會話之間共享的窗口。

我更喜歡使用的模型 tmux,但我不能說它比使用的模型更好 screen


12
2018-05-11 15:38



論證親 tmux 是個 德國鐵路。乘坐快速列車,努力工作 ssh 使用移動連接,你會很快看到 tmux 模型是優越的,因為經過一次頻繁的連接中斷後,你不需要在重新登錄後重新安排你的jumphost上的所有窗格。 SCNR - Tino
如果您經常斷電,我建議您進行調查 狂舞 與之相反,它可以自動從丟失的信號中恢復 ssh - Ciprian Tomoiagă


對我來說,tmux的交易破壞者是會話共享的實現。

在GNU Screen中,如果你讓另一個用戶連接到一個會話,或者只是讓你的會話連接到多個終端,它們可以獨立運行(在終端B的會話A中切換屏幕不會使終端A也切換到會議A)。

以上不是tmux的情況(還是?)或者我還沒有找到改變行為的方法。

如果有人知道在tmux中更改此行為的方法,或者如果tmux更新以更改此行為或者提供現在更改此行為的選項,請發表評論。


4
2018-06-19 18:38



tmux 有一個“鏈接”會話的概念 new-session -t shared。來自“共享”的Windows出現在新會話中,一個窗口中的新窗口出現在另一個窗口中,而關閉窗口的窗口則關閉另一個窗口。但是,每個客戶端看到的窗口特定於它附加的實際會話。 - chepner