Вопрос Tmux - проверьте, завершен ли сервер


Есть ли какие-либо известные tmux-функция, как tmux has-session -t <session>, но чтобы проверить, является ли tmux сервер в настоящее время работает? Это было бы удобно при написании сценариев автоматизации. При проверке наличия сеанса с

$ tmux has-session -t SomeSession

пользователь, если сервер tmux уже запущен, представлен с ошибкой

failed to connect to server

Поэтому я хочу проверить заранее, если сервер в настоящее время запущен. Если да, проверьте сеансы и так далее. Есть ли способ заставить замолчать это без подключения к / dev / null?


4
2018-01-06 15:00


происхождения




ответы:


Бег

if tmux info &> /dev/null; then 
  echo running
else
  echo not running
fi

10
2017-11-28 09:58





Вы можете использовать ps -e | grep -q program проверить, действительно ли программа program работает в общем виде.

В качестве примера в оболочке:

if $(ps -e | grep -q tmux); then echo "Tmux is running."; fi

1
2018-01-06 15:44



Помогите мне прояснить это. Вы обрабатываете команду $(ps -e | grep -q tmux) как логическое, поскольку большинство команд оболочки возвращаются true/false, в зависимости от кода выхода? - krystah
@krystah Да точно. grep код выхода является успешным, только если найдено хотя бы одно совпадение, и переключатель -q подавить его выход. - Levans
YMMV. Проблема заключается в том, что могут быть и другие процессы, у которых есть строка program в них. Например, процесс grep -q program на самом деле вызовет совпадение (по крайней мере, в моей системе) или открытый текстовый файл, например vim program-not-running.txt, Таким образом, это не работает для меня вообще, потому что он всегда возвращает true, если tmux работает или нет. Покупатель, будь осторожен. - bnjmn