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