November 1, 2024

Как я устал, запускать все сессии руками 

Привет, владелец фермы или одинокий путник в мире майнинга альта.
Возможно, у тебя как и у меня есть сервер, скорее всего даже на Ubuntu?
О да, и ты как я пользуешься tmux потому что есть ощущение что удобнее уже и не придумать.


Ну тогда ты по адресу, садись, смотри. Я написал себе код, который при смерти tmux или сервера разворачивает все без особых проблем.

#!/bin/zsh
# Название Tmux сессии
SESSION_NAME="MAIN"# Основная директория
BASE_DIR="soft"  # Директория где лежит весь софт
if [[ ! -d "$BASE_DIR" ]]; then
  echo "Ошибка: Директория $BASE_DIR не найдена."
  exit 1
fi
echo "Создание новой Tmux сессии: $SESSION_NAME..."
tmux new-session -d -s $SESSION_NAME
run_scripts() {
  local dir="$1"
  local dir_name=$(basename "$dir")echo "Обработка директории: $dir_name"# Создаем новое окно с zsh
  echo "Создание нового окна для $dir_name..."
  tmux new-window -t $SESSION_NAME -n "$dir_name"
  tmux send-keys -t $SESSION_NAME:$dir_name "cd $dir" C-m
  tmux send-keys -t $SESSION_NAME:$dir_name "git pull" C-m
  sleep 2  # Задержка
  if [[ -f "$dir/main.py" ]]; then
    echo "Запуск main.py в $dir_name..."
    tmux send-keys -t $SESSION_NAME:$dir_name "source venv/bin/activate" C-m
    sleep 2  # Задержка после активации виртуального окружения
    tmux send-keys -t $SESSION_NAME:$dir_name "python3 main.py" C-m
  elif [[ -f "$dir/bot.py" ]]; then
    echo "Запуск bot.py в $dir_name..."
    tmux send-keys -t $SESSION_NAME:$dir_name "source venv/bin/activate" C-m
    sleep 2  # Задержка после активации виртуального окружения
    tmux send-keys -t $SESSION_NAME:$dir_name "python3 bot.py" C-m
  elif [[ -f "$dir/index.js" ]]; then
    echo "Запуск index.js в $dir_name..."
    tmux send-keys -t $SESSION_NAME:$dir_name "node index.js" C-m
  elif [[ -f "$dir/main.js" ]]; then
    echo "Запуск main.js в $dir_name..."
    tmux send-keys -t $SESSION_NAME:$dir_name "node main.js" C-m
  else
    echo "Не удалось найти файлы для запуска в $dir_name. Окно останется открытым."
    tmux send-keys -t $SESSION_NAME:$dir_name "echo 'Не удалось запустить ни один скрипт в $dir_name'" C-m
  fi
}
for dir in "$BASE_DIR"/*; do
  if [[ -d "$dir" ]]; then
    run_scripts "$dir"
    # Задержка перед переходом к следующей директории (например, 2 секунды)
    sleep 2
  else
    echo "Директория $dir не найдена"
  fi
done
echo "Подключение к Tmux сессии..."
tmux attach -t $SESSION_NAME

Приходи к нам в канал https://t.me/mainecode
или к нам в чатик http://t.me/mainechatik
ну или можешь подписаться на канал про фильмы и сериалы https://t.me/chto_smotrel