diff --git a/jsite.sh b/jsite.sh index 5227e30..151de17 100644 --- a/jsite.sh +++ b/jsite.sh @@ -302,11 +302,7 @@ get_site_status() { fi # 检查PM2进程状态 - local pm2_status=$(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' - ") + local pm2_status=$(export NVM_DIR="/home/jingrow/.nvm" && [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && pm2 list 2>/dev/null | grep -w '$site_name' | grep -c 'online' || echo '0') if [ "$pm2_status" != "0" ]; then echo "running" @@ -1604,9 +1600,25 @@ build_site() { # 启动网站 start_site() { + local status=$(get_site_status "$SITE_NAME") + if [ "$status" = "not_exists" ]; then + log_error "网站 $SITE_NAME 不存在" + return 1 + fi + + if [ "$status" = "running" ]; then + log_warning "网站 $SITE_NAME 已在运行中" + return 0 + fi + log_info "启动网站: $SITE_NAME" - restart_site - return $? + + if ! (export NVM_DIR="/home/jingrow/.nvm" && [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && pm2 start '$SITE_NAME'); then + log_error "网站启动失败" + return 1 + fi + + log_success "网站 $SITE_NAME 启动成功" } # 停止网站 @@ -1624,11 +1636,7 @@ stop_site() { log_info "停止网站: $SITE_NAME" - if ! su - "jingrow" -c " - export NVM_DIR=\"\$HOME/.nvm\" - [ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\" - pm2 stop '$SITE_NAME' - "; then + if ! (export NVM_DIR="/home/jingrow/.nvm" && [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && pm2 stop '$SITE_NAME'); then log_error "网站停止失败" return 1 fi @@ -1647,18 +1655,18 @@ restart_site() { log_info "重启网站: $SITE_NAME" if [ "$status" = "running" ]; then - if ! su - "jingrow" -c " - export NVM_DIR=\"\$HOME/.nvm\" - [ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\" - pm2 restart '$SITE_NAME' - "; then + if ! (export NVM_DIR="/home/jingrow/.nvm" && [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && pm2 restart '$SITE_NAME'); then log_error "网站重启失败" return 1 fi else # 如果未运行,则启动 - start_site - return $? + log_info "网站未运行,正在启动..." + if ! (export NVM_DIR="/home/jingrow/.nvm" && [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && pm2 start '$SITE_NAME'); then + log_error "网站启动失败" + return 1 + fi + log_success "网站启动成功" fi log_success "网站 $SITE_NAME 重启成功" @@ -1684,11 +1692,7 @@ show_site_status() { # 显示PM2详细状态 if [ "$status" != "not_exists" ]; then log_info "PM2状态:" - su - "jingrow" -c " - export NVM_DIR=\"\$HOME/.nvm\" - [ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\" - pm2 list | grep -E '(App name|$SITE_NAME)' || echo '未找到PM2进程' - " + (export NVM_DIR="/home/jingrow/.nvm" && [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && pm2 list | grep -E '(App name|$SITE_NAME)' || echo '未找到PM2进程') fi } @@ -1730,11 +1734,7 @@ show_site_logs() { fi log_info "网站 $SITE_NAME 的日志:" - su - "jingrow" -c " - export NVM_DIR=\"\$HOME/.nvm\" - [ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\" - pm2 logs '$SITE_NAME' - " + (export NVM_DIR="/home/jingrow/.nvm" && [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && pm2 logs '$SITE_NAME') } # ========================================