diff --git a/jsite.sh b/jsite.sh index 077ef32..3a1d064 100644 --- a/jsite.sh +++ b/jsite.sh @@ -1521,15 +1521,36 @@ start_site() { log_warning "未找到构建产物,建议先执行构建: $0 --mode build --site-name $SITE_NAME" fi - # 使用PM2启动,设置端口环境变量 - if ! su - "jingrow" -c " + # 检查PM2中是否已存在同名进程 + local pm2_exists=$(su - "jingrow" -c " export NVM_DIR=\"\$HOME/.nvm\" [ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\" - cd '$JSITE_BASE_DIR/$SITE_NAME' - PORT=$port pm2 start npm --name '$SITE_NAME' -- start - "; then - log_error "网站启动失败" - return 1 + pm2 list 2>/dev/null | grep -w '$SITE_NAME' | wc -l || echo '0' + ") + + if [ "$pm2_exists" != "0" ]; then + # 如果PM2中已存在进程,使用restart + log_info "PM2中已存在进程,使用restart模式..." + if ! su - "jingrow" -c " + export NVM_DIR=\"\$HOME/.nvm\" + [ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\" + pm2 restart '$SITE_NAME' + "; then + log_error "网站重启失败" + return 1 + fi + else + # 如果PM2中不存在进程,使用start + log_info "使用PM2启动新进程..." + if ! su - "jingrow" -c " + export NVM_DIR=\"\$HOME/.nvm\" + [ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\" + cd '$JSITE_BASE_DIR/$SITE_NAME' + pm2 start npm --name '$SITE_NAME' -- start + "; then + log_error "网站启动失败" + return 1 + fi fi # 等待启动完成