5

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

$ tmux has-session -t SomeSession

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

failed to connect to server

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

3 ответа3

10

Бежать

if tmux info &> /dev/null; then 
  echo running
else
  echo not running
fi
3
[[ -n $(pgrep tmux) ]] && echo true || echo false

Если процесс с «tmux» в его имени запущен, он напечатает true, в противном случае он напечатает false.

Это работает, потому что pgrep находит весь процесс с "tmux" в их именах и возвращает их PID. «-N» в основном проверяет, существует ли вывод $(pgrep tmux). Если выходные данные существуют (например, "14204 23137"), тогда тест оценивается как истинный. Если выходные данные не существуют (или не определены), тест оценивается как ложный.

Если вы предпочитаете длинную форму:

if [[ -n $(pgrep tmux) ]]; then
  echo true
else
  echo false
fi

Обратите внимание, что сказанное bnjmn применимо и здесь. А именно, это даст ложное срабатывание, если процесс выполняется не так, как tmux, но в названии есть "tmux".

1

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

Как пример в оболочке:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .