Как запустить команду в tmux без дубликатов

Практические лайфхаки для разработчиков, DevOps и админов: Docker, Linux, Bash, Python, Golang, Ansible, логи и безопасность — только рабочие решения. Даем готовые команды, конфиги и приёмы диагностики, которые экономят часы и дни. Если нужно быстро настроить, отладить и обезопасить инфраструктуру — вы по адресу.

tmuxbashlinux

ℹ️ Если ты используешь tmux для фонового выполнения процессов, например, серверов, бэкапов или парсинга данных, ты, скорее всего, сталкивался с проблемой:

Ошибка: ты запускаешь команду в tmux, но случайно создаёшь дубликаты процессов.

✔️ Решение: перед запуском проверять, есть ли уже такая сессия, и только если её нет — создавать!

SESSION_NAME="my_task"
COMMAND="long_running_script.sh"

# Проверяем, запущена ли уже эта сессия
if ! tmux has-session -t $SESSION_NAME 2>/dev/null; then
    echo "Сессия не найдена. Запускаем новую..."
    tmux new-session -d -s $SESSION_NAME "$COMMAND"
else
    echo "Сессия уже запущена. Подключаемся..."
    tmux attach -t $SESSION_NAME
fi

Как это работает?

  • tmux has-session -t $SESSION_NAME - проверяет, существует ли уже сессия.
  • Если сессии нет, то создаём новую (tmux new-session -d -s $SESSION_NAME "$COMMAND").
  • Если сессия есть, просто подключаемся (tmux attach -t $SESSION_NAME).

✳️ Теперь ты не будешь случайно запускать один и тот же процесс несколько раз!

tags: #полезно #bash #linux

🧭 @recura_tech

Скриншот тёмного терминала с подсветкой синтаксиса: в окне показан bash-скрипт проверки tmux-сессии и команды для запуска или подключения к ней.
Терминал с примером bash-скрипта для проверки и запуска сессии tmux.

Читайте так же