From e5016f61eb3ddfe505acb1c6c3d53ff59b43b5f7 Mon Sep 17 00:00:00 2001 From: jingrow Date: Sun, 10 Aug 2025 21:05:16 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dstart=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=E6=97=A0=E6=B3=95=E5=90=AF=E5=8A=A8jsite=E5=89=8D=E7=AB=AF?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jsite.sh | 35 ++++++++++++++++++++++++++++------- 1 file changed, 28 insertions(+), 7 deletions(-) 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 # 等待启动完成