Byobu vs. GNU Screen vs. tmux —技能的实用性和可转让性


95

到目前为止,我已经使用Konsole来管理多个shell会话,但是我还没有尝试过ByobuGNU Screentmux,它们为多个shell提供了更好的支持。它们都有一个主要功能,那就是允许分离当前会话,然后再重新连接到该旧会话。

为了帮助我选择一种学习工具,我想知道:它们在以下方面有何不同?

  1. 功能(显然)
  2. 项目成熟度。我不想学习变化太多的工具。欢迎进行增强,但是我不喜欢功能消失之类的惊喜。
  3. 学习曲线
  4. 在不同平台上的可用性。如果我学习了一个工具,我希望能够在FreeBSD服务器,SuSE桌面或Ubuntu上使用它。
  5. 与其他交互式外壳程序的兼容性。我是否仍可以像以前一样使用vimemacs -nw(非窗口模式或文本模式)?键盘快捷键会与其他工具冲突吗?

我只是尝试了所有这些,而Byobu看起来像是GNU Screen和tmux的前端。那么为什么有人创建Byobu而不是为GNU屏幕项目做出贡献并添加新功能呢?为什么Byobu在GNU Screen中没有某种高级界面模式?如果我将Byobu用作日常工具,并以GNU Screen作为后端,那么如果某台计算机仅具有GNU Screen,我是否可以在不使用Byobu的情况下将该知识转移为使用GNU Screen?


1
评论我自己的问题。发布后,我刚刚看到每个标签在StackExchange中使用的次数:gnu-screen:199次tmux:125次byobu:18次这是否意味着byobu仍然不受欢迎?还是byobu如此直观,以至于没有人对如何使用它有任何疑问?
Keitai

1
因为byobu只是screen具有附加功能的分支,所以该gnu-screen标签适用。
grawity 2012年

2
根据文档(manpages.ubuntu.com/manpages/precise/en/man1/byobu.1.html),Byobu的默认配置是使用tmux作为默认后端。如果byobu是gnu屏幕的分支,这是否意味着tmux比gnu屏幕更好?
Keitai

1
有趣的是,我不知道它现在是否支持tmux,尽管它仍然只是包装器脚本-显然甚至不是fork。但是,是的,tmux在某些方面比Screen更好(至少他们的FAQ如此宣称)。
grawity 2012年

22
Byobu不是任何东西的叉子!它是Screen和Tmux之上的一层,类似于Gnome / KDE是Xorg之上的一层。
达斯汀·柯克兰

Answers:


32

对于Tmux vs GNU Screen,请阅读

以及可以在博客等网站上找到的其他几种比较形式。

一些经常重复的通用术语:

  • Tmux较新。这意味着它有点幻想(简单的垂直分割,漂亮的绿线),而对于兼容性的测试却很少(根据其支持者,可以忽略不计)。
  • Tmux更加注重资源。
  • GNU Screen随处可见,并且很可能仍在使用。

除此之外,一个人可以查看一个或另一个替代方案的特定功能,并且个人喜好将主导讨论。我个人以前经常使用GNU Screen,而现在我使用Tmux。

我还没有发现Byobu对我而言具有任何“杀手级功能”。我认为用例不需要它,因此它提供了一种抽象。


另一种看待它的方式是,请注意Byobu可以使用GNU Screen或Tmux作为后端,这表明与用户POV的差异主要是肤浅的。


268

好问题! 就其价值而言,我是Byobu的作者和维护者。

Byobu是一个配置层,最初被编写为位于GNU Screen之上,但现在也可以在Tmux之上工作

我于2008年12月开始写Byobu ,当时我在Googleplex遇到了一群Screen和Ubuntu Server用户,发现我们所有人都在自己的~/.screenrc配置中维护了自己的整洁/有趣/有用的技巧。而且我们必须手动在我们使用的数十个或数百个服务器之间移动这些服务器。我们开始交易技巧和窍门,然后我将它们收集到名为“ screen-profiles” 的原始GPLv3项目中。大约6个月后,整个社区围绕“ 屏幕配置文件 ”发展,该项目不仅限于屏幕黑客,我们还拥有配置实用程序,实时状态插件和按键绑定。所以我们重命名了项目 “ Byobu”是日语,意为优雅,可折叠的“屏幕”,其附加好处是,与“ Screen $ FOO”相比,Google可以更成功地将“ Byobu $ FOO”用于Google。

由于Byobu现在已在大多数Linux发行版(UbuntuDebianFedoraArch)中使用,并且可以在大多数Mac / BSD和其他UNIX上运行,因此可以在任何终端上提供相同的外观,便捷的键绑定,动态系统状态信息需要访问。

为什么不回馈GNU Screen项目呢?有两个原因... Byobu的所有功能以及配置选项。它没有需要被包括在屏幕源基站是有功能的。如果Screen默认情况下将它们包含在内,则某些事情可能会更好地工作或表现更好,但是许多更改非常“有意”,通常很难或不可能为拥有25年历史的上游项目做出贡献。另外,GNU Screen项目的运行速度非常缓慢,即使有的话。它已有25多年的历史了,自20088月以来从未正式发布过。每个发行版都带有大量的补丁程序,只是为了保持/ usr / bin / screen的正常运行和安全。例如,Ubuntu和Debian目前在大约48个代码中包含19K行代码补丁

大约2年前,我了解了Tmux,并真正爱上了源代码,设计,界面和活跃的社区!我可以更轻松地为上游Tmux 提供修复程序,并在邮件列表上讨论主题。作为在所有地方都使用它的Byobu用户,我希望Tmux会话具有与四年以上Byobu相同的外观。因此,我移植了所有的Byobu代码,以便与Tmux作为后端(如Screen)一样良好地工作。从Byobu 5.0版本开始,Tmux现在是默认的后端,在旧模式下仍支持Screen。Byobu现在利用Tmux over Screen的许多现代功能,包括大大改进的256色支持,UTF8字符和水平/垂直窗口分割。

如果您对Screen或Tmux中的默认设置感到满意,或者想从头开始编写自己的配置文件,那么Screen和Tmux绝对是一种出色的实用程序,它们为我们的生活增加了多年的效率。如果您对真正可以扩展和扩展Screen和Tmux功能的一组配置感兴趣,请查看Byobu!

干杯,达斯汀


16
很好的解释。屏幕打补丁太厉害了-它需要新的维护工具或其他东西吗?Byobu很棒-谢谢。
nealmcb 2012年

10
我希望我可以投票两次。我已经使用byobu多年了,直到最近才知道它一直困扰着我的复杂性。
杰米·库克

2
我一直使用CTRL+` as escape. With 屏幕`,tmux这就像一种魅力,但不适用于byobu(Debian 7.1 Wheezy)。
2013年

1
现在screen有了新的维护者,发展似乎已经加速,事情会改变吗?
大师

这些自以为是的默认设置不能使它成为更年轻的tmux项目吗?答案似乎缺少“为什么不回馈tmux项目?”这一段。xkcd.com/927
user2707671

12

从实际使用的情况下,最大的区别screen,并tmux为他们如何处理分割窗口。

窗口screen是单个伪终端。连接到screen会话后,可以将终端分为多个区域,每个区域都可以显示一个screen窗口。多个区域可以显示同一窗口。拆分不属于会话的一部分;如果您分离,则拆分已消失。

一个窗口tmux由一个或多个伪终端组成,每个窗格一个。这意味着,如果您以后分离并重新连接,则窗格将保留。这也意味着您只能在中一次显示一个窗口tmux,并且不能在多个窗口之间共享窗格。tmux确实允许在多个会话之间共享窗口。

我更喜欢所使用的模型tmux,但是我不能说它比所使用的模型更好screen


3
pro的论点tmuxDeutsche Bahn。乘坐快速火车,尝试ssh使用移动连接进行工作,您会很快发现该tmux模型优越得多,因为在频繁的连接中断之一后,您无需在重新登录后重新布置Jumphost上的所有窗格。SCNR
Tino,

3
如果你正面临着频繁的断线,我建议寻找到MOSH可以从丢失信号自动恢复,不像ssh
西普里安Tomoiagă

4

对我来说,tmux的交易突破在于会话共享的实现。

在GNU屏幕中,如果让另一个用户连接到一个会话,或者只是让您的会话连接到多个终端,则他们可以独立操作(从终端B切换会话A中的屏幕不会使终端A也在以下位置切换屏幕)分会A)。

以上不是tmux的情况(还好吗?),或者我还没有找到改变行为的方法。

如果有人知道在tmux中更改此行为的方法,或者如果tmux更新了以更改此行为或提供了立即更改此行为的选项,请发表评论。


6
tmux具有与的“链接”会话的概念new-session -t shared。来自“共享”的窗口出现在新会话中,一个窗口中的新窗口出现在另一个会话中,关闭一个窗口中的一个窗口则关闭另一个窗口。但是,每个客户端看到的窗口是特定于其附加的实际会话的。
chepner
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.