优化start和restart模式

This commit is contained in:
jingrow 2025-08-19 16:50:37 +08:00
parent 4757aab77d
commit 2346cd86b1

View File

@ -408,14 +408,14 @@ get_site_status() {
return return
fi fi
# 检查PM2进程状态 # 检查PM2进程状态(避免因为多次输出"0"导致误判)
local pm2_status=$(su - "jingrow" -c " local pm2_count=$(su - "jingrow" -c "
export NVM_DIR=\"\$HOME/.nvm\" export NVM_DIR=\"\$HOME/.nvm\"
[ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\" [ -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" echo "running"
else else
echo "stopped" echo "stopped"
@ -2080,8 +2080,18 @@ build_site() {
# 启动网站 # 启动网站
start_site() { start_site() {
log_info "启动网站: $SITE_NAME" 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\" [ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\"
pm2 restart '$SITE_NAME' pm2 restart '$SITE_NAME'
"; then "; then
log_warning "pm2 restart 失败,尝试重新创建并启动..."
if ! start_project_with_pm2; then
log_error "网站重启失败" log_error "网站重启失败"
return 1 return 1
fi fi
fi
else else
# 如果未运行,则启动 # 若未运行则用PM2创建并启动
start_site if ! start_project_with_pm2; then
return $? log_error "网站启动失败"
return 1
fi
fi fi
# 保存PM2进程列表确保重启后能自动恢复 # 保存PM2进程列表确保重启后能自动恢复