From fd18e37da79a864ab4bfe7a74bc51657169782c8 Mon Sep 17 00:00:00 2001 From: rickchengx <38122586+rickchengx@users.noreply.github.com> Date: Tue, 1 Nov 2022 16:59:27 +0800 Subject: [PATCH] [Fix-12109]Fix the errors when starting 2 times with dolphinscheduler-daemon.sh (#12118) --- script/dolphinscheduler-daemon.sh | 31 ++++++++++++++++++++++--------- script/status-all.sh | 8 ++++---- 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/script/dolphinscheduler-daemon.sh b/script/dolphinscheduler-daemon.sh index 5839615efc..b3daa463a4 100755 --- a/script/dolphinscheduler-daemon.sh +++ b/script/dolphinscheduler-daemon.sh @@ -28,8 +28,6 @@ startStop=$1 shift command=$1 shift -CLASS=$1 -shift echo "Begin $startStop $command......" @@ -81,8 +79,25 @@ else exit 1 fi +state="" +function get_server_running_status() { + state="STOP" + if [ -f $pid ]; then + TARGET_PID=`cat $pid` + if [[ $(ps -p "$TARGET_PID" -o comm=) =~ "bash" ]]; then + state="RUNNING" + fi + fi +} + case $startStop in (start) + # if server is already started, cancel this launch + get_server_running_status + if [[ $state == "RUNNING" ]]; then + echo "$command running as process $TARGET_PID. Stop it first." + exit 1 + fi echo starting $command, logging to $DOLPHINSCHEDULER_LOG_DIR overwrite_server_env "${command}" nohup /bin/bash "$DOLPHINSCHEDULER_HOME/$command/bin/start.sh" > $log 2>&1 & @@ -110,13 +125,11 @@ case $startStop in ;; (status) - # more details about the status can be added later - serverCount=`ps -ef | grep "java" | grep "$DOLPHINSCHEDULER_HOME" | grep "$CLASS" | grep -v "grep" | wc -l` - state="STOP" - # font color - red - state="[ \033[1;31m $state \033[0m ]" - if [[ $serverCount -gt 0 ]];then - state="RUNNING" + get_server_running_status + if [[ $state == "STOP" ]]; then + # font color - red + state="[ \033[1;31m $state \033[0m ]" + else # font color - green state="[ \033[1;32m $state \033[0m ]" fi diff --git a/script/status-all.sh b/script/status-all.sh index 062de851e8..9e622633f7 100755 --- a/script/status-all.sh +++ b/script/status-all.sh @@ -49,25 +49,25 @@ StateRunning="Running" mastersHost=(${masters//,/ }) for master in ${mastersHost[@]} do - masterState=`ssh -o StrictHostKeyChecking=no -p $sshPort $master "cd $installPath/; bash bin/dolphinscheduler-daemon.sh status master-server org.apache.dolphinscheduler.server.master.MasterServer;"` + masterState=`ssh -o StrictHostKeyChecking=no -p $sshPort $master "cd $installPath/; bash bin/dolphinscheduler-daemon.sh status master-server;"` echo "$master $masterState" done # 2.worker server check state for worker in ${workerNames[@]} do - workerState=`ssh -o StrictHostKeyChecking=no -p $sshPort $worker "cd $installPath/; bash bin/dolphinscheduler-daemon.sh status worker-server org.apache.dolphinscheduler.server.worker.WorkerServer;"` + workerState=`ssh -o StrictHostKeyChecking=no -p $sshPort $worker "cd $installPath/; bash bin/dolphinscheduler-daemon.sh status worker-server;"` echo "$worker $workerState" done # 3.alter server check state -alertState=`ssh -o StrictHostKeyChecking=no -p $sshPort $alertServer "cd $installPath/; bash bin/dolphinscheduler-daemon.sh status alert-server org.apache.dolphinscheduler.alert.AlertServer;"` +alertState=`ssh -o StrictHostKeyChecking=no -p $sshPort $alertServer "cd $installPath/; bash bin/dolphinscheduler-daemon.sh status alert-server;"` echo "$alertServer $alertState" # 4.api server check state apiServersHost=(${apiServers//,/ }) for apiServer in ${apiServersHost[@]} do - apiState=`ssh -o StrictHostKeyChecking=no -p $sshPort $apiServer "cd $installPath/; bash bin/dolphinscheduler-daemon.sh status api-server org.apache.dolphinscheduler.api.ApiApplicationServer;"` + apiState=`ssh -o StrictHostKeyChecking=no -p $sshPort $apiServer "cd $installPath/; bash bin/dolphinscheduler-daemon.sh status api-server;"` echo "$apiServer $apiState" done