Ubuntu

Byobu 在每個連接上創建新會話

  • February 19, 2018

每次我打開 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 分組會話”的支持,但我不完全確定它們的用途,沒有它們我也可以生活。

引用自:https://serverfault.com/questions/894473