Browse Source

Update startup.sh

更新根据pid文件来识别后台进程是否处于运行状态,避免同时启动多个后台进程。
sanxiHsu 3 years ago
parent
commit
dc9df5d760
1 changed files with 54 additions and 25 deletions
  1. 54 25
      server/src/main/bin/startup.sh

+ 54 - 25
server/src/main/bin/startup.sh

@@ -1,32 +1,61 @@
 #!/bin/bash
-DIR_HOME=("/opt/openoffice.org3" "/opt/libreoffice" "/opt/libreoffice6.0" "/opt/libreoffice6.1" "/opt/libreoffice6.2" "/opt/libreoffice6.3" "/opt/libreoffice6.4" "/opt/libreoffice7.0" "/opt/libreoffice7.1" "/opt/libreoffice7.2" "/opt/openoffice4" "/usr/lib/openoffice" "/usr/lib/libreoffice" "/usr/lib64/libreoffice")
+#
+#
+#############################
+# First_Author:  凯京科技
+# Second_Author:  sanxi
+# Version: 1.1
+# Date:    2021/09/17
+# Description:  v1.1:修改进程启动机制为pid形式。
+#############################
+#
+DIR_HOME=("/opt/openoffice.org3" "/opt/libreoffice" "/opt/libreoffice6.1" "/opt/libreoffice7.0" "/opt/libreoffice7.1" "/opt/openoffice4" "/usr/lib/openoffice" "/usr/lib/libreoffice")
 FLAG=
 OFFICE_HOME=
-KKFILEVIEW_BIN_FOLDER=$(cd "$(dirname "$0")";pwd)
+KKFILEVIEW_BIN_FOLDER=$(cd "$(dirname "$0")" || exit 1 ;pwd)
+PID_FILE_NAME="kkFileView.pid"
+PID_FILE="${KKFILEVIEW_BIN_FOLDER}/${PID_FILE_NAME}"
 export KKFILEVIEW_BIN_FOLDER=$KKFILEVIEW_BIN_FOLDER
-cd $KKFILEVIEW_BIN_FOLDER
-echo "Using KKFILEVIEW_BIN_FOLDER $KKFILEVIEW_BIN_FOLDER"
-grep 'office\.home' ../config/application.properties | grep '!^#'
-if [ $? -eq 0 ]; then
-  echo "Using customized office.home"
-else 
- for i in ${DIR_HOME[@]}
-  do
-    if [ -f $i"/program/soffice.bin" ]; then
-      FLAG=true
-      OFFICE_HOME=${i}
-      break
-    fi
-  done
-  if [ ! -n "${FLAG}" ]; then
-    echo "Installing OpenOffice"
-    sh ./install.sh
+#
+## 如pid文件不存在则自动创建
+if [ ! -f ${PID_FILE_NAME} ]; then
+  touch "${KKFILEVIEW_BIN_FOLDER}/${PID_FILE_NAME}"
+fi
+## 判断当前是否有进程处于运行状态
+if [ -s "${PID_FILE}" ]; then
+  PID=$(cat "${PID_FILE}")
+  echo "进程已处于运行状态,进程号为:${PID}"
+  exit 1
+else
+  cd "$KKFILEVIEW_BIN_FOLDER" || exit 1
+  echo "Using KKFILEVIEW_BIN_FOLDER $KKFILEVIEW_BIN_FOLDER"
+  grep 'office\.home' ../config/application.properties | grep '!^#'
+  if [ $? -eq 0 ]; then
+    echo "Using customized office.home"
   else 
-    echo "Detected office component has been installed in $OFFICE_HOME"
+  for i in ${DIR_HOME[@]}
+    do
+      if [ -f "$i/program/soffice.bin" ]; then
+        FLAG=true
+        OFFICE_HOME=${i}
+        break
+      fi
+    done
+    if [ ! -n "${FLAG}" ]; then
+      echo "Installing OpenOffice"
+      sh ./install.sh
+    else 
+      echo "Detected office component has been installed in $OFFICE_HOME"
+    fi
   fi
+
+  ## 启动kkFileView
+  echo "Starting kkFileView..."
+  nohup java -Dfile.encoding=UTF-8 -Dspring.config.location=../config/application.properties -jar kkFileView-4.0.0.jar > ../log/kkFileView.log 2>&1 &
+  echo "Please execute ./showlog.sh to check log for more information"
+  echo "You can get help in our official homesite: https://kkFileView.keking.cn"
+  echo "If this project is helpful to you, please star it on https://gitee.com/kekingcn/file-online-preview/stargazers"
+  PROCESS=$(ps -ef | grep kkFileView | awk 'NR==1{print $2}')
+  # 启动成功后将进程号写入pid文件
+  echo "$PROCESS" > "$PID_FILE"
 fi
-echo "Starting kkFileView..."
-echo "Please execute ./showlog.sh to check log for more information"
-echo "You can get help in our official homesite: https://kkFileView.keking.cn"
-echo "If this project is helpful to you, please star it on https://gitee.com/kekingcn/file-online-preview/stargazers"
-nohup java -Dfile.encoding=UTF-8 -Dspring.config.location=../config/application.properties -jar kkFileView-4.0.0.jar > ../log/kkFileView.log 2>&1 &