From 2346cd86b1aa526a046bbc2d5f6df160a70693d2 Mon Sep 17 00:00:00 2001 From: jingrow Date: Tue, 19 Aug 2025 16:50:37 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96start=E5=92=8Crestart?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jsite.sh | 39 +++++++++++++++++++++++++++------------ 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/jsite.sh b/jsite.sh index 33a5b62..e6f2fe9 100644 --- a/jsite.sh +++ b/jsite.sh @@ -408,14 +408,14 @@ get_site_status() { return fi - # 检查PM2进程状态 - local pm2_status=$(su - "jingrow" -c " + # 检查PM2进程状态(避免因为多次输出"0"导致误判) + local pm2_count=$(su - "jingrow" -c " export NVM_DIR=\"\$HOME/.nvm\" [ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\" - pm2 list 2>/dev/null | grep -w '$site_name' | grep -c 'online' || echo '0' - ") + pm2 list 2>/dev/null | grep -w '$site_name' | grep 'online' | wc -l + " | tr -d '\r') - if [ "$pm2_status" != "0" ]; then + if [ -n "$pm2_count" ] && [ "$pm2_count" -gt 0 ]; then echo "running" else echo "stopped" @@ -2080,8 +2080,18 @@ build_site() { # 启动网站 start_site() { log_info "启动网站: $SITE_NAME" - restart_site - return $? + + if [ "$(get_site_status \"$SITE_NAME\")" = "not_exists" ]; then + log_error "网站 $SITE_NAME 不存在" + return 1 + fi + + if ! start_project_with_pm2; then + log_error "网站启动失败" + return 1 + fi + + log_success "网站 $SITE_NAME 已启动" } # 停止网站 @@ -2127,13 +2137,18 @@ restart_site() { [ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\" pm2 restart '$SITE_NAME' "; then - log_error "网站重启失败" - return 1 + log_warning "pm2 restart 失败,尝试重新创建并启动..." + if ! start_project_with_pm2; then + log_error "网站重启失败" + return 1 + fi fi else - # 如果未运行,则启动 - start_site - return $? + # 若未运行,则用PM2创建并启动 + if ! start_project_with_pm2; then + log_error "网站启动失败" + return 1 + fi fi # 保存PM2进程列表,确保重启后能自动恢复