Tmux 出現 protocol version mismatch 解法

Debian / Ubuntu Linux 做 Package Upgrade 後, Tmux 很常遇到下述問題:

  1. $ tmux attach # 出現下述錯誤訊息

    protocol version mismatch (client 7, server 6)

  2. 於是就無法進入 tmux 了~

解法很簡單: 只要把 tmux server 的 process pid 全部 kill 掉, 重新開始就可以正常使用.

但是如果是 tmux 明明還在某些無法停止的事情, 但是需要進去又進不去的狀況, 要如何先暫時解決?

Tmux 出現 protocol version mismatch 解法

下述解法取自此篇: Twitter / pvaneynd: $ tmux attach protocol version ..., 暫時解決的步驟如下:

  1. $ tmux attach

    protocol version mismatch (client 7, server 6)

  2. $ pgrep tmux # 找出 tmux pid

    3429

  3. $ /proc/3429/exe attach # 用 /proc/pid/exe attach 就可以正常進入.

上述作法就可以暫時解決, 之後再來重新啟動 tmux server 就可以了, 但是, 就很好奇 /proc/pid/exe 到底是什麼東西?

  • $ ls -l /proc/3429/exe

    /proc/3429/exe -> /usr/bin/tmux

/proc/pid/exe 居然是 ln, 而且 ln 連結到的就是 tmux 程式正常的執行路徑, 與平常下 tmux attach 是一樣的.

問題發生原因應該是: Debian / Ubuntu Linux 更新 Package 後, tmux 的程式被修改了(Protocol version 也修改了), Tmux Client 與 Tmux Server 的版本比對出來是不一致的, 所以不讓此程式執行.

猜想解法的原理是: 目前在系統跑的程式, 應該都已經在記憶體裡面了, 所以可以透過 /proc/pid/exe 執行的, 應該是舊版的 tmux server, 所以 /proc/pid/exe attach 可以使用(版本相同).

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料