一、編寫啟動腳本
#!/bin/bash SCRIPTPATH=`dirname $0` PWDPATH=`cd $SCRIPTPATH && pwd` # 配置jar home路徑,按照實際配置修改 #JRE_HOME=/data/jdk1.8.0/jre # jvm 允許參數 JVM_OPTION=" -Xms512m -Xmx2g" # 項目配置 jar路徑 SPRING_CLASSPATH=$PWDPATH/lib/*
#項目配置文件 SPRING_CONFIG=file:$PWDPATH/conf/ SPRING_CONFIG=$PWDPATH/conf/bootstrap.properties SPRING_LOGGING=$PWDPATH/conf/logback.xml SIGAR=$PWDPATH/sigar # 刪除服務后啟動 PROCESS=$(ps -ef | grep $PWDPATH/lib | grep -v grep | awk '{print $2}') echo "$PROCESS" if [ -n "$PROCESS" ]; then echo "PROCESS no IS not NULL" kill -9 $PROCESS fi echo "------------ begin starting $PWDPATH -------------" OPTION="$JVM_OPTION -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$PWDPATH/logs" SPRING_PARAMS="--spring.config.location=$SPRING_CONFIG --logging.config=$SPRING_LOGGING" nohup java -server $OPTION -Djavax.servlet.request.encoding=UTF-8 -Dfile.encoding=UTF-8 -Duser.language=zh_CN -Dsun.jnu.encoding=UTF-8 -Djava.library.path=$SIGAR -Djava.security.egd=file:/dev/./urandom -jar $SPRING_CLASSPATH $SPRING_PARAMS > /dev/null 2>&1 & new_agent_pid=$! #java -server $OPTION -Djava.security.egd=file:/dev/./urandom -jar $SPRING_CLASSPATH $SPRING_PARAMS echo "------------ end start $new_agent_pid $PWDPATH -------------"
這個-Djavax.servlet.request.encoding=UTF-8 -Dfile.encoding=UTF-8 -Duser.language=zh_CN -Dsun.jnu.encoding=UTF-8 命令主要是為了解決日志輸出中文亂碼
二、編寫關閉腳本
#!/bin/bash SCRIPTPATH=`dirname $0` PWDPATH=`cd $SCRIPTPATH && pwd` #rm -fr native PROCESS=$(ps -ef | grep $PWDPATH/lib | grep -v grep | awk '{print $2}') echo "$PROCESS" if [ -n "$PROCESS" ]; then echo "PROCESS no IS not NULL" kill -9 $PROCESS fi
這些腳本存放在項目的根路徑下面
三、編寫開機啟動腳本
#!/bin/bash #chkconfig:2345 80 90 #decription: FaceDeviceCenter start #SCRIPTPATH=`dirname $0` #PWDPATH=`cd $SCRIPTPATH && pwd`
#項目路徑 PWDPATH=/mnt/server/FaceDeviceCenter-8083 # 配置jar home路徑,按照實際配置修改 #JRE_HOME=/data/jdk1.8.0/jre # jvm 允許參數 JVM_OPTION=" -Xms512m -Xmx2g" # 項目配置 SPRING_CLASSPATH=$PWDPATH/lib/* SPRING_CONFIG=file:$PWDPATH/conf/ SPRING_CONFIG=$PWDPATH/conf/bootstrap.properties SPRING_LOGGING=$PWDPATH/conf/logback.xml SIGAR=$PWDPATH/sigar # 刪除服務后啟動 PROCESS=$(ps -ef | grep $PWDPATH/lib | grep -v grep | awk '{print $2}') echo "$PROCESS" if [ -n "$PROCESS" ]; then echo "PROCESS no IS not NULL" kill -9 $PROCESS fi echo "------------ begin starting $PWDPATH -------------" OPTION="$JVM_OPTION -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$PWDPATH/logs" SPRING_PARAMS="--spring.config.location=$SPRING_CONFIG --logging.config=$SPRING_LOGGING" nohup java -server $OPTION -Djavax.servlet.request.encoding=UTF-8 -Dfile.encoding=UTF-8 -Duser.language=zh_CN -Dsun.jnu.encoding=UTF-8 -Djava.library.path=$SIGAR -Djava.security.egd=file:/dev/./urandom -jar $SPRING_CLASSPATH $SPRING_PARAMS > /dev/null 2>&1 & new_agent_pid=$! #java -server $OPTION -Djava.security.egd=file:/dev/./urandom -jar $SPRING_CLASSPATH $SPRING_PARAMS echo "------------ end start $new_agent_pid $PWDPATH -------------"
-
注意腳本要添加這兩行代碼,否則會啟動不了
#chkconfig:2345 80 90 #decription:autostart - 將腳本移動到
/etc/rc.d/init.d目錄下,或者在這個目錄下創建一個xxxx.sh的腳本文件,一般我喜歡把項目名稱作為腳本文件名,並把上面的腳本內容寫進去,比如我腳本名tomcat.sh為例
mv /xxxx/tomcat.sh /etc/rc.d/init.d
- 增加腳本的可執行權限
chmod +x /etc/rc.d/init.d/tomcat.sh
- 添加腳本到開機自動啟動項目中
cd /etc/rc.d/init.d chkconfig --add tomcat.sh chkconfig tomcat.sh on
