在Linux系统中,开机启动配置文件通常位于/etc/init.d
目录下,并且是一个脚本文件,该脚本可以通过service
命令或systemctl
命令来启动、停止、重启服务。
1、创建一个服务脚本 /etc/init.d/ruoyi.sh
#!/bin/bash
CURRENT_PATH=$(pwd)
JAR_NAME="ruoyi-admin"
APP_PORT=9002
APP_ENV=druid
init() {
for name in `find . -name *.jar`
do
if [[ "${name##*.}"x = "jar"x ]]
then
JAR_NAME=${name##*/}
echo ${JAR_NAME}
return
fi
done
}
usage() {
echo "Usage: sh deploy.sh [start|stop|restart|status] port"
exit 1
}
status(){
pid=`ps -ef|grep ${JAR_NAME}|grep -v grep|awk '{print $2}'`
if [[ -z "${pid}" ]]; then
echo "${JAR_NAME} is not running"
return 1
else
echo "${JAR_NAME} is already running. pid=${pid}"
return 0
fi
}
start(){
echo "port ${APP_PORT}"
status
if [[ $? -eq 1 ]]; then
echo "${JAR_NAME} is starting"
nohup java -jar -Xms200m -Xmx200m -XX:+HeapDumpOnOutOfMemoryError ${JAR_NAME} --spring.profiles.active=${APP_ENV} --server.port=${APP_PORT} --shiro.session.expireTime=10080 --shiro.session.validationInterval=120 --ruoyi.addressEnabled=true --spring.datasource.druid.master.url=jdbc:mysql://localhost:3307/ruoyi?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai > run.log 2>&1 &
fi
}
stop(){
status
if [[ $? -eq "0" ]]; then
echo "${JAR_NAME} is stopping"
#kill ==> kill -15
#kill -9 强杀
#cat pid | xargs kill
kill -15 ${pid}
#等待一段时间
sleep 8
#强杀
pid=`ps -ef|grep ${JAR_NAME}|grep -v grep|awk '{print $2}'`
if [[ -z "${pid}" ]]; then
echo "${JAR_NAME} is closing"
else
kill -9 ${pid}
fi
fi
}
restart(){
stop
sleep 3
start
}
init
if [[ -z "$2" ]]; then
echo "no port param!"
else
APP_PORT=$2
fi
case "$1" in
"start")
start
;;
"stop")
stop
;;
"status")
status
;;
"restart")
restart
;;
*)
usage
;;
esac
2、给脚本赋权限
sudo chmod +x /etc/init.d/ruoyi.sh
3、使用systemctl
配置服务以开机启动
sudo systemctl enable ruoyi.sh