/
pizzadox
/
remsmeta
Обзор
Документация
Войти
/
pizzadox
/
remsmeta
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
start-dev.sh
41 строка
2 KB
Z User
26bb6201-76fd-41d9-979e-ac7c5da504c8
22 июл 2026, 18:09
22 июл 2026, 18:09
de0f376
Код
Авторство
О чём код?
#!/usr/bin/env bash # Надёжный запуск dev-сервера, переживающий завершение bash-сессии sandbox. # - setsid: новая сессия, SIGHUP от bash не доходит # - прямой вывод в dev.log (без pipe tee, который держит процесс привязанным) # - авто-рестарт при падении next # - использует полный путь к next binary (PATH в setsid сессии может быть ограничен) cd /home/z/my-project # 1. Убить старые процессы pkill -f "next dev -p 3000" 2>/dev/null pkill -f "next-server" 2>/dev/null pkill -f "start-dev-supervisor" 2>/dev/null sleep 1 # 2. Освободить порт if command -v fuser >/dev/null 2>&1; then fuser -k 3000/tcp 2>/dev/null fi # 3. Полный путь к next binary NEXT_BIN="/home/z/my-project/node_modules/.bin/next" # 4. Запустить next dev в новой сессии через setsid, с авто-рестарт обёрткой. # Обёртка тоже в новой сессии, чтобы пережить завершение текущего bash. setsid bash -c ' NEXT_BIN="/home/z/my-project/node_modules/.bin/next" while true; do echo "[supervisor] starting next dev at $(date -Iseconds)" >> /home/z/my-project/dev.log "$NEXT_BIN" dev -p 3000 </dev/null >>/home/z/my-project/dev.log 2>&1 & PID=$! wait $PID 2>/dev/null EC=$? echo "[supervisor] next dev exited code=$EC at $(date -Iseconds), restart in 2s" >> /home/z/my-project/dev.log sleep 2 done ' </dev/null >>/home/z/my-project/dev.log 2>&1 & SUP_PID=$! disown $SUP_PID 2>/dev/null || true echo "supervisor pid=$SUP_PID started"