Назад | Перейти на главную страницу

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.

У меня была такая же проблема, и я нашел решение. Я создал проблему по этому поводу:
https://bugs.launchpad.net/byobu/+bug/1750430

Я надел детективную шляпу и сумел починить.


TL; DR - Либо вызов tmux напрямую или отменить изменение в Byobu select-session.py.


Запуск равнины tmux команда присоединяется к первому сеансу, так что это, вероятно, самое простое "исправление" для этого (сеансы со странными названиями создаются только с tmux бэкэнд, а не с screen).


Однако вы можете исправить это и для Бёбу.

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())])

Итак, Бёбу намеренно создает сеанс с именем _%s-%i, где %s это имя сеанса и %i это PID.

Если посмотреть на обвинение Git в строке, можно увидеть этот коммит:
https://github.com/dustinkirkland/byobu/commit/c0050ac51ee8accc3eb35862483bc40b19e3c269

Возврат строки устраняет проблему:

os.execvp("tmux", ["tmux", "-2", "attach", "-t", session_name])

... но, вероятно, также удаляет поддержку "групповых сеансов tmux", но я не совсем уверен, для чего они используются, и я могу жить без них.