題 tmux與屏幕


我即將重新開始使用 GNU屏幕,但我一直聽到人們偶爾提到 TMUX 作為更好的選擇。它真的提供了所有功能的替代品 屏幕 提供,例如在不同窗口中的活動監控等?各自的優點和缺點是什麼?


221
2018-01-06 15:20


起源


還討論了 unix.stackexchange.com/questions/549/tmux-vs-gnu-screen - Lloyd Dewolf
在屏幕中,您可以通過發送命令到附加的會話 screen -S automate_me -X stuff 'command'$(echo -ne '\015') 你不能在tmux。如果您正在測試虛擬機ISO /映像並且需要快速遠程執行某些命令,那麼非常有用。例如,我在Vim命令中使用它來快速調試Virtualbox屏幕中的腳本。在早期版本的tmux中,我發現屏幕處理的文本傳遞速度更快,而tmux崩潰了。此外,屏幕不需要任何配置來處理UTF-8等tmux。 - dezza


答案:


我喜歡的一些(主要)原因 tmux 過度 screen

  • 狀態欄更容易使用。您可以輕鬆地為當前窗口,具有活動的窗口等設置不同的文本/樣式,並且可以在狀態欄的左側和右側放置內容,包括可以以指定間隔(默認為15秒)運行的shell命令。
  • 幾乎任何你可以在裡面運行的命令 tmux 可以從shell運行 tmux command [args]。這使得它非常容易編寫腳本,並且可以輕鬆地執行複雜的命令。
  • 更精確的自動窗口重命名。而 screen 根據命令的第一個單詞設置標題,並且要求shell配置在shell窗口中執行, tmux 跟踪每個窗口中實際運行的進程,並相應地更新標題。這樣,您可以使用任何shell和零配置進行動態重命名。例如:假設您正在運行Z Shell;窗口的名稱將是“zsh”。現在假設你要編輯一些配置文件,所以你輸入 sudo emacs /etc/somefile。雖然sudo要求你輸入密碼,但是窗口的名字將是“sudo”,但是一旦你完成了這個並且 sudo 發布會 emacs,標題將是“emacs”。當你完成所有並退出 emacs,標題將變回“zsh”。這對於跟踪窗口非常有用,它在特定情況下也特別有用,例如,如果您在另一個窗口中有一些長時間運行的進程,偶爾會提示您輸入 dialog;當發生這種情況時,窗口名稱將更改為“對話框”,因此您將知道必須切換到該窗口並執行某些操作。
  • 更好的會話處理(恕我直言)。您可以通過其中的會話做更多事情 tmux 本身。您可以輕鬆切換,重命名等,並且可以在會話之間移動和共享窗口。它還有一個不同的模型,每個用戶都有一個控制他/她的會話和客戶端連接的服務器。這樣做的缺點是,如果服務器崩潰,你會失去一切;不過,我從來沒有讓服務器崩潰。
  • tmux 似乎更積極地發展。經常有更新,你可以 根據此常見問題解答提交錯誤報告或功能請求 並在幾天內得到答案。

這些只是我們立刻想到的主要事情。還有其他一些小東西,我確信我忘記了一些事情。這絕對是值得的 tmux 儘管如此。


146
2018-01-17 20:36



tmux開發更加活躍,因為它是 新。 GNU Screen幾乎就是 25歲,所以他們已經修復了大部分錯誤。 - a paid nerd
付費書呆子的評論是你最後一點非常重要的資格。並且所述的第二點並不是真正的差別,因為它適用於屏幕,除非您可以更具體。 - jw013
@a付費書呆子: techrepublic.com/blog/opensource/is-tmux-the-gnu-screen-killer/... - sjas
@apaidnerd這是一個非常豐富的聲明: savannah.gnu.org/bugs/... - Błażej Michalik


會議 是的集合 視窗 可以在以後分離和重新附加。 Windows可能包含一個或多個 窗格。例如配置,退房 這裡 和 這裡。)

TMUX

  • 優點
    • 可以將密鑰發送到其他窗格,有點像IDE
    • 簡單的鍵綁定 - 使用正確的配置,您可以在Vim或Screen中感到賓至如歸
    • 內置Vim-ish和Emacs-ish綁定
    • 良好的佈局管理,很像平鋪窗口管理器
    • Unicode似乎只適用於現代終端
    • 一些終端問題已修復 TERM=tmux
  • 缺點
    • 慢 - 不確定為什麼,但擊鍵似乎有點滯後 沒有更多緩慢的問題
    • 多路復用會強制整個會話寬度和高度到最小的連接終端
    • 在Mac OS X上多次崩潰,導致整個會話丟失
    • 升級後在Linux上失敗,我無法重新連接到舊會話
    • 偶爾錯過命令按鍵 - ^ A ^ [ 需要幾次嘗試複製模式
    • 無法將窗格從一個窗口移動到另一個窗口 固定的 join-pane 命令
    • 終端寬度更改(窗口大小調整)後沒有線路展開(或“回流”或“重繞”)

GNU屏幕

  • 優點
    • 非常穩定(1987年v1.0)
    • 一些終端問題已修復 TERM=screen
    • Emacs-ish綁定內置
    • 易於移動和控制水平窗格
    • 多路復用時,任何連接的終端都可以調整窗格的大小
  • 缺點
    • 沒有補丁的垂直拆分(Ubuntu除外)
    • 分離時,窗格分裂丟失
    • 讓Unicode工作需要一點點技巧和決心
    • 瘋狂的狀態行配置

85
2018-05-04 18:28



只有在按下Esc時才會出現滯後擊鍵嗎? tmux有一個延遲,等待你查看你是進入xterm序列還是只是一個單獨的Esc,並結合vim,它看起來相當遲鈍。將轉義時間設置為較低的值,如50。 - Eevee
你說這也很有趣 ^A ^[ 有時不起作用;我屏幕有同樣的問題,但從來沒有tmux!而且我相信你可以隨身攜帶窗格 join-pane。 - Eevee
我發現屏幕使用了相當多的內存,這可能是一個缺點。 - paradroid
好, tmux 很糟糕 vim,在某些情況下(我的是),沒有任何解決方案可以在任何地方發布,甚至人們花費一些時間來解決我的問題也無法做到。當你不能使用它時很煩人 <C-Left> 和 <C-Right> 在 vim。 - yo'
No vertical splits without patch (except on Ubuntu) 我不認為這是真的。我已經使用屏幕幾年了,我從來沒有在Debian和Fedora上橫向或縱向分割任何問題。即使在使用Termux的Android上,它也像魅力一樣。 - Forivin


屏幕專家:它在Linux和Solaris上幾乎可以開箱即用。當你必須在平台之間來回切換時,最好不要進行心理上下文切換。

我確信你可以在任何平台上編譯tmux,但有時你有足夠的權限來使用屏幕,但實際的系統管理員並不真的想要添加任何非必要的軟件。


10
2018-04-10 18:05





我從tmux中得到的東西我在屏幕上不容易得到:

  1. 使垂直窗格分裂
  2. 多路復用,我們用於遠程和本地配對。

8
2018-04-19 17:30



不 屏幕支持多路復用 -x 選項和 acladd? - poolie
正如之前的帖子所提到的,屏幕有垂直窗格分割(顯然需要一個沒有Ubuntu的補丁)。此外,多路復用工作正常並且已有多年。 - EntangledLoops
垂直分裂一直在主線上 screen 自2014年發布以來,4.2發布了許多發行版 非常 舊版本,特別是Apple。 - Neal Fultz
兩點都不正確。 - Forivin
答案在2018年是不正確的 - Alec Istomin


我現在已經使用tmux大約2天了,所以我對它的肆無忌憚的熱情還沒有因為遇到煩人的用例而受到限制。雖然經歷了從一個程序轉換到另一個程序的通常成長的痛苦,我被幾個積極的功能所震撼,但讓我相信我永遠不會回到屏幕的功能是複制粘貼模式的實用性。在屏幕中,您無法進入複製模式,在緩衝區中向後滾動,然後轉到另一個窗口。在tmux中,您可以在復制模式下同時擁有多個窗口,緩衝區可以滾動回不同的位置。此外,還有多個複制緩衝區。而且您無需修補源以獲得fFtT光標移動。


8
2018-01-17 16:10





我已經更換了 GNU屏幕 同 TMUX 在每個用例中除了一個 - 當我需要一個 超級終端 相當於連接到串口。正如Aaron Toponce在他的文章中指出的那樣 “使用GNU屏幕連接到串行空調製解調器”tmux常見問題 狀態:

屏幕內置串口和telnet支持;這是膨脹,不太可能     要添加到tmux。

我的典型 TMUX 用例是結合使用創建多窗格和多窗口開發會話 tmuxinator。如果你想學習 TMUX,我推薦獲得Brian P. Hogan的書, tmux:富有成效的無鼠標開發


4
2018-06-21 15:27





我會說屏幕的可用性是它的強度,但它的窗口系統並不像它那樣容易處理 的。我必須說我用  目前大部分時間都有大量的終端選項卡而不是屏幕窗口。

@Jed Schneider:你可以用垂直窗格分割 按Ctrl+一個 然後 | (豎條)。


1
2017-12-15 22:15