Byobu 在每個連接上創建新會話
每次我打開 byobu-enable 連接到我的 Ubuntu 17.10 機器時,我都會得到一個新的“會話”,而不是重用我現有的會話。
連接時:
Byobu sessions... 1. tmux: foo: 3 windows (created Sun Jan 28 10:23:59 2018) [204x53] (group foo) 2. tmux: ba: 1 windows (created Sun Jan 28 10:24:16 2018) [204x53] 3. Create a new Byobu session (tmux) 4. Run a shell without Byobu (/bin/bash)
選擇一個,比如(1),我被轉儲到一個名為 eg _foo-20462 的 byobu 會話
$ byobu list-session _foo-20462: 4 windows (created Sun Jan 28 10:42:20 2018) [204x53] (group foo) foo: 4 windows (created Sun Jan 28 10:23:59 2018) [204x53] (group foo) bar: 1 windows (created Sun Jan 28 10:24:16 2018) [204x53]
奇怪的是 _foo-20462 似乎是“foo”會話的精確複製品。我能想出殺死這些的唯一方法是
byobu kill-session -t _foo-20462
,但我認為必須有一種方法可以禁用此行為,因為它在以前的 Ubuntu 版本中不一樣。
我遇到了同樣的問題並找到了解決方法。我為此創建了一個問題:
https ://bugs.launchpad.net/byobu/+bug/1750430
我戴上偵探帽,設法把它修好了。
TL;DR -
tmux
直接呼叫或恢復 Byobu 的更改select-session.py
。執行一個簡單的
tmux
命令附加到第一個會話,所以這可能是最簡單的“修復”(奇怪命名的會話僅使用tmux
後端創建,而不是使用screen
)。但是,您也可以為 Byobu 解決此問題。
man byobu
透露,負責選擇會話的Byobu部分是byobu-select-session
。
which byobu-select-session
指示我去/usr/bin/byobu-select-session
,它又來電/usr/libexec/byobu/include/select-session.py
。這些路徑對你來說可能不同(我在 Fedora 上)。創建和命名會話的行
select-session.py
是這一行(在函式中attach_session()
):os.execvp("tmux", ["tmux", "-2", "new-session", "-t", session_name, "-s", "_%s-%i" % (session_name, os.getpid())])
因此,Byobu 故意創建了一個名為 的會話
_%s-%i
,其中%s
是會話名稱,%i
是 PID。查看該行的 Git 責備顯示此送出:
https ://github.com/dustinkirkland/byobu/commit/c0050ac51ee8accc3eb35862483bc40b19e3c269
恢復該行可以解決問題:
os.execvp("tmux", ["tmux", "-2", "attach", "-t", session_name])
…但可能也刪除了對“tmux 分組會話”的支持,但我不完全確定它們的用途,沒有它們我也可以生活。