Как указано , вы не можете использовать ps
в несуществующем -процессе.
Если у вас bash
поддерживает ассоциативные массивы:
declare -A jobinfo
# collect job information
joblist=( $(jobs -p) )
for pid in "${joblist[@]}"; do
jobinfo["$pid"]="$( ps -p "$pid" -o args= )"
done
# later...
# wait for jobs
err=0
for pid in "${joblist[@]}"; do
if ! { wait "$pid" || ! (( code=$? )); }; then
printf 'Got non-zero exit status (%d) from PID %d: %s\n' \
"$code" "$pid" "${jobinfo[$pid]}"
err=1
fi
done
# exit 0 if all was good, exit 1 otherwise
exit "$err"
Здесь я собираю все необходимые данные, прежде чем начать ждать завершения работы. Я также жду завершения всех заданий, чтобы пользователь получил информацию не только о первом неудачном задании.
Без использования ассоциативных массивов (должно работать по умолчанию bash
в macOS):
# collect job information
joblist=( $(jobs -p) )
for pid in "${joblist[@]}"; do
jobinfo+=( "$( ps -p "$pid" -o args= )" )
done
# later...
err=0
i=0
for pid in "${joblist[@]}"; do
if ! { wait "$pid" || ! (( code=$? )); }; then
printf 'Got non-zero exit status (%d) from PID %d: %s\n' \
"$code" "$pid" "${jobinfo[$i]}"
err=1
fi
i=$(( i + 1 ))
done
exit "$err"
Если я заменю ваши скрипты "./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, желательно со сценарием, который вы действительно используете, и некоторыми файлами журнала tmux.
Это ошибка в tmux
.
Проблема отслеживается здесьhttps://bugs.launchpad.net/ubuntu/+source/tmux/+bug/1847484и ссылка на нее здесьhttps://github.com/tmux/tmux/issues/1980
Исправление имеет низкий приоритет, так как это проблема «плохой конфигурации», поэтому оно все еще существует по крайней мере в 3.0 -rc5.
В основном это проблема:
So, the crash seems to happen when sending keystrokes to a frame that is still showing error messages from parsing the configuration.
Таким образом, вам необходимо убедиться, что у вас есть правильный tmux
файл конфигурации, который не вызывает ошибок, например
.tmux.conf:33: invalid option: pane-border-fg