Я только что обновил сервер Ubuntu с 18.10 до 19.04, а затем до 19.10. Я думаю, что это обновление также обновило tmux до более новой версии.

С тех пор мои скрипты tmux, которые создают некоторые информационные панели, больше не работают.

При подаче команды типа

tmux send-keys "echo 'test'" C-m;

Я получаю сообщение lost server.

Это происходит, когда ничего не присоединено к сеансу, содержащему целевую панель.

Когда я начинаю сеанс и присоединяюсь к нему, send-keys работает.

Системный журнал содержит следующую запись

12 марта 23:27:33 ядро ​​машины: [27.074805] tmux: сервер [2657]: segfault на 751 ip 000056042469f029 sp 00007ffe602aa6f0 ошибка 4 в tmux [560424675000+62000]

Вот как выглядит мой сценарий создания, он вызывается в crontab как @reboot, но проблема возникает и при его ручном выполнении.

SESSION=stuff

tmux new-session -d -s $SESSION -n 'homepage'
tmux split-window -h -p 50
tmux select-pane -t 1; tmux send-keys "./lhp.sh" C-m;
tmux select-pane -t 2; tmux send-keys "./lnginx.sh" C-m;
tmux split-window -v -p 50
tmux select-pane -t 3; tmux send-keys "./lsmr.sh" C-m;

tmux new-window -t $SESSION -n 'shells'
tmux split-window -h -p 50

tmux select-window -t :1;

И в какой-то более поздний момент времени (часы или дни) я вызываю

tmux attach-session -t stuff

Для просмотра содержимого.

Кто-нибудь знает, что я могу продолжать использовать его, как раньше?

0
Daniel F 13 Мар 2020 в 12:21

2 ответа

Это ошибка в tmux.

Проблема отслеживается здесь https://bugs.launchpad.net/ ubuntu/+source/tmux/+bug/1847484 и ссылка на него здесь https ://github.com/tmux/tmux/issues/1980

Исправление имеет низкий приоритет, поскольку это проблема «плохой конфигурации», поэтому оно все еще существует по крайней мере в 3.0-rc5.

В основном это проблема:

Таким образом, сбой, по-видимому, происходит при отправке нажатий клавиш во фрейм, который все еще показывает сообщения об ошибках при анализе конфигурации.

Поэтому вам нужно убедиться, что у вас есть действительный файл конфигурации tmux, который не выдает ошибок, например

.tmux.conf:33: invalid option: pane-border-fg
0
Daniel F 13 Мар 2020 в 12:48
Ах да, я совсем забыл об этом.
 – 
Nicholas Marriott
13 Мар 2020 в 13:45

Если я заменю ваши скрипты "./l*" на "sleep 10", скрипт не рухнет с tmux 3.1-rc, так что либо это ошибка в 2.9a, либо проблема в одном из ваших скриптов.

Разумеется, скрипт тоже не работает — нельзя смешивать new -t и -n. Вы имеете в виду -s вместо -t? И вам, вероятно, нужно добавить -d, иначе остальная часть скрипта не запустится. Также ваши номера панелей неверны - вы разделяете только один раз, но затем нацеливаете панели 1 и 2, когда существуют только 0 и 1. Поэтому я подозреваю, что это не тот сценарий, который вы на самом деле используете.

В любом случае tmux 2.9a больше не поддерживается, поэтому лучше всего собрать tmux 3.0a или 3.1-rc и посмотреть, существует ли проблема. Если это так, вы можете открыть задачу по адресу https://github.com/tmux/tmux/issues< /a>, желательно со сценарием, который вы действительно используете, и некоторыми файлами журнала tmux.

0
Nicholas Marriott 13 Мар 2020 в 11:47
Спасибо. Что касается -d и -s, вы правы. Это фрагмент всего файла, и я изменил только new-session, забыв о флагах. Проблема не в скриптах, даже tmux send-keys "echo 'test'" C-m; не работает. попробую построить.
 – 
Daniel F
13 Мар 2020 в 12:24
Кроме того, это происходит даже тогда, когда я не использую tmux select-pane -t 1;, а просто позволяю send-keys перейти к тому, к чему он идет, когда создаются новые панели. (Я разделяю дважды), насколько мне известно, нумерация панелей начинается с 1. Раньше это работало, поэтому я сомневаюсь, что причиной являются эти индексы.
 – 
Daniel F
13 Мар 2020 в 12:28
Смотрите другой ответ. Это исправление не вошло в версию 3.0, поэтому вам потребуется выполнить обновление до master или 3.1-rc, либо вы можете просто внести изменения, чтобы ваш файл .tmux.conf не вызывал ошибок.
 – 
Nicholas Marriott
13 Мар 2020 в 13:46