Byobu 在每个连接上创建新会话

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),我就会被转入一个名为 _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 版本中情况并非如此。

答案1

我遇到了同样的问题,并找到了解决办法。我创建了一个关于此问题的问题:
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 分组会话”的支持,但我不完全确定它们的用途,而且没有它们我也可以活下去。

相关内容