Byobu создает новую сессию на каждом соединении
Каждый раз, когда я подключаюсь к своей машине с Ubuntu 17.10 с включенной функцией byobu-enable, я получаю новый "сеанс", а не повторно использую мои существующие сеансы.
На подключении:
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), меня сбрасывают в сеанс byobu с именем, например, _foo-20462
$ 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's select-session.py
,
Управляющий равниной tmux
Команда присоединяется к первому сеансу, так что это, вероятно, самое простое "исправление" для этого (сеансы со странным именем создаются только с tmux
бэкэнд, а не с screen
).
Тем не менее, вы можете исправить это и для Byobu.
man 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", но я не совсем уверен, для чего они используются, и я могу жить без них.