Как определить, подключен ли tmux к сеансу в bash? - PullRequest
1 голос
/ 30 марта 2019

У меня есть файл .sh, который создает новый сеанс для tmux и добавляет несколько окон, файл следует использовать только тогда, когда сеанс не существует.Например:

tmux new-session -A -s `ax` -n ui -d
# add windows and other magic here...

Я хочу запретить создание сеанса с тем же именем и воссоздание окон в случае, если файл .sh был случайно выполнен и сеанс запущен.

В основноммне нужно:

Если топор сеанса tmux не существует с таким именем сеанса, создайте этот сеанс.Если я не подключен к сеансу tmux, присоединитесь к этому сеансу.

Я хотел бы знать, как определить, существует ли сеанс tmux и подключен ли к нему tmux, в этом примере ax выполняется и не позволяет выполнить сценарий .sh или, если сеанс не завершается, я хочу повторно выполнить сценарий .sh.

В настоящее время я собираюсь использовать:

tmux ls | grep attached

Я хотел бы знать, если вы знаете лучший способ.

Ответы [ 2 ]

1 голос
/ 30 марта 2019

Немного сложно понять, что вы имеете в виду.Я интерпретирую это как

, если сеанс tmux не существует с таким именем сеанса, создайте его.Если я не присоединен к сеансу tmux, прикрепите к этому имени сеанса.

Если это не так, пожалуйста, прокомментируйте.

У меня есть аналогичные функции в моих скриптах.Все, что я делаю, это

tmuxstart() {
    tmux ls | grep "sess" && { tmux a -t sess; return 0; }
    #rest of tmux script to create session named "sess"
    tmux a -t sess
}

Если сеанс с именем "sess" существует, тогда я выполняю следующие 2 сгруппированные команды в строке (присоединяюсь к ней и завершаю функцию).

Примечаниечто я не должен проверить, не привязан ли я уже к функции.Tmux делает это автоматически.Если вы попытаетесь подключиться к сеансу tmux во время сеанса, он ответит

sessions should be nested with care, unset $TMUX to force

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

0 голосов
/ 28 июня 2019

Вы можете использовать $TMUX, чтобы обнаружить, если он уже подключен, мой код:

if [ ! "$TMUX" ]; then
        tmux attach -t main || tmux new -s main
fi
...