Bläddra i källkod

optimize the shell script

sunyj 8 år sedan
förälder
incheckning
2a4faba3b0
1 ändrade filer med 61 tillägg och 37 borttagningar
  1. 61 37
      kanban-console/kanban

+ 61 - 37
kanban-console/kanban

@@ -15,51 +15,55 @@ source /etc/profile
 #export JAVA_HOME=$JAVA_HOME
 
 BASE_DIR=/home/uas/program/kanban
-BACKUP_DIR=$BASE_DIR
 PROFILE=test
 MAVEN_URI=http://maven.ubtob.com
+PORT[0]=8063
+PORT[1]=8064
 
 CONTEXT_NAME=kanban-console
 VERSION=0.0.1-SNAPSHOT
 WF=$CONTEXT_NAME-$VERSION.war
-PID_CMD="ps aux | grep $WF | grep -v 'grep' | awk '{print \$2}'"
-cd $BASE_DIR
- 
-start(){
-    if [ ! "`eval ${PID_CMD}`" ]; then
-        echo "Starting service..."
-        cd $BASE_DIR/node0
-        startWithPort 8063
-        cd $BASE_DIR/node1
-        startWithPort 8064
-        cd $BASE_DIR
-        status
-    else
-        echo "Service is already running."
+
+run_cmd(){
+    local curr=`whoami`
+    local runner=uas
+    if [ $curr == "root" ]; then
+        runuser -l $runner -c "$1"
+    elif [ $curr == $runner ]; then
+        eval $1
     fi
 }
 
-startWithPort(){
-    nohup java -Dserver.port=$1 -Dspring.profiles.active=$PROFILE -Dserver.context-path=/kanban -server -XX:PermSize=128M -XX:MaxPermSize=256m -jar $BASE_DIR/$WF 1>log.log 2>nohup.log &
+start(){
+    for port in ${PORT[@]};do
+        startPort $port
+    done
 }
 
 stop(){
-    if [ "`eval ${PID_CMD}`" ]; then
-        echo "Stopping service..."
-        eval ${PID_CMD} | xargs kill -9
-    else
-        echo "Service is not running."
-    fi
+    for port in ${PORT[@]};do
+        stopPort $port
+    done
 }
 
 restart(){
-    if [ "`eval ${PID_CMD}`" ]; then
-        stop
-    fi
-    start
+    for port in ${PORT[@]};do
+        stopPort $port
+        if [ ! -d $BASE_DIR/$port ]; then
+            mkdir $BASE_DIR/$port
+        fi
+        run_cmd "cp -f $BASE_DIR/$WF $BASE_DIR/$port/$WF"
+        startPort $port
+        SERVICE_STATUS="curl -s -w %{http_code} localhost:$port"
+        while [ "`$SERVICE_STATUS`" = "000" ];do
+            echo "[Port=$port] Wait 3s for current service..."
+            sleep 3
+        done
+    done
 }
 
 status(){
+    PID_CMD="ps aux | grep $WF | grep -v 'grep' | awk '{print \$2}'"
     if [ "`eval ${PID_CMD}`" ]; then
         ps aux | grep $WF | grep -v 'grep'
     else
@@ -68,9 +72,9 @@ status(){
 }
 
 update(){
-    metadata_last=maven-metadata-last.xml
-    metadata=maven-metadata.xml
-    wget -q -O $metadata $MAVEN_URI/artifactory/libs-snapshot-local/com/uas/kanban/$CONTEXT_NAME/maven-metadata.xml
+    metadata_last=$BASE_DIR/maven-metadata-last.xml
+    metadata=$BASE_DIR/maven-metadata.xml
+    run_cmd "wget -q -O $metadata $MAVEN_URI/artifactory/libs-snapshot-local/com/uas/kanban/$CONTEXT_NAME/maven-metadata.xml"
     time_last="0"
     if [ -f $metadata_last ]; then
         time_last=`cat $metadata_last|grep lastUpdated|awk '{print substr($1,14,14)}'`
@@ -84,15 +88,35 @@ update(){
 }
 
 function install() {
-    stop
-    rm -rf $WF.bak
-    if [ -f $WF ]; then
-        mv -f $WF $WF.bak
+    rm -rf $BASE_DIR/$WF.bak
+    if [ -f $BASE_DIR/$WF ]; then
+        mv -f $BASE_DIR/$WF $BASE_DIR/$WF.bak
     fi
     echo 'Downloading war file...'
-    wget $MAVEN_URI/artifactory/libs-snapshot-local/com/uas/kanban/$CONTEXT_NAME/$VERSION/$WF
+    run_cmd "wget -O $BASE_DIR/$WF $MAVEN_URI/artifactory/libs-snapshot-local/com/uas/kanban/$CONTEXT_NAME/$VERSION/$WF"
     echo 'Download succeeded'
-    start
+    restart
+}
+
+startPort(){
+    PID_CMD_PORT="ps aux | grep $BASE_DIR/$1/$WF | grep -v 'grep' | awk '{print \$2}'"
+    if [ ! "`eval ${PID_CMD_PORT}`" ]; then
+        echo "[Port=$1] Starting service..."
+        cd $BASE_DIR/$1
+        run_cmd "nohup java -Dserver.port=$1 -Dspring.profiles.active=$PROFILE -Dserver.context-path=/kanban -server -XX:PermSize=64M -XX:MaxPermSize=128m -jar $BASE_DIR/$1/$WF 1>/dev/null 2>$BASE_DIR/$1/nohup.log &"
+    else
+        echo "[Port=$1] Service is already running."
+    fi
+}
+
+stopPort(){
+    PID_CMD_PORT="ps aux | grep $BASE_DIR/$1/$WF | grep -v 'grep' | awk '{print \$2}'"
+    if [ "`eval ${PID_CMD_PORT}`" ]; then
+        echo "[Port=$1] Stopping service..."
+        eval ${PID_CMD_PORT} | xargs kill -9
+    else
+        echo "[Port=$1] Service is not running."
+    fi
 }
 
 case $1 in
@@ -118,4 +142,4 @@ case $1 in
         echo "Usage: $0 {start|stop|restart|status|update|install}"
         exit 1
         ;;
-esac 
+esac