Debian / Ubuntu Linux 做 Package Upgrade 後, Tmux 很常遇到下述問題:
- $ tmux attach # 出現下述錯誤訊息
protocol version mismatch (client 7, server 6)
- 於是就無法進入 tmux 了~
解法很簡單: 只要把 tmux server 的 process pid 全部 kill 掉, 重新開始就可以正常使用.
但是如果是 tmux 明明還在某些無法停止的事情, 但是需要進去又進不去的狀況, 要如何先暫時解決?
Tmux 出現 protocol version mismatch 解法
下述解法取自此篇: Twitter / pvaneynd: $ tmux attach protocol version ..., 暫時解決的步驟如下:
- $ tmux attach
protocol version mismatch (client 7, server 6)
- $ pgrep tmux # 找出 tmux pid
3429
- $ /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 可以使用(版本相同).