From dc9df5d760fe03ba1f7bf2cf12ce76a1117bfc44 Mon Sep 17 00:00:00 2001 From: sanxiHsu <56463570+sanxiHsu@users.noreply.github.com> Date: Sat, 18 Sep 2021 06:10:57 +0000 Subject: [PATCH] Update startup.sh MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 更新根据pid文件来识别后台进程是否处于运行状态,避免同时启动多个后台进程。 --- server/src/main/bin/startup.sh | 83 +++++++++++++++++++++++----------- 1 file changed, 56 insertions(+), 27 deletions(-) diff --git a/server/src/main/bin/startup.sh b/server/src/main/bin/startup.sh index 99ad8f23..985e9333 100644 --- a/server/src/main/bin/startup.sh +++ b/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 - else - echo "Detected office component has been installed in $OFFICE_HOME" - fi +# +## 如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 + 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 &