1.将程序jar包,配置文件放于同一个目录下
/usr/local/data 只是示例,可以为任一路径
2.设置启动脚本bootstart.sh
#!/bin/bash
APP_NAME=test.jar
YUM_FILE_PATH=application.properties
# 检查程序是否在运行
is_exist(){
# 获取PID
PID=$(ps -ef |grep ${APP_NAME} | grep -v $0 |grep -v grep |awk '{print $2}')
# -z "${pid}"判断pid是否存在,如果不存在返回1,存在返回0
if [[ -z "${PID}" ]]; then
# 如果进程不存在返回1
echo "进程不存在"
return 1
else
# 进程存在返回0
echo "进程存在"
return 0
fi
}
# 启动方法
start(){
is_exist
if [[ $? -eq "0" ]]; then
echo "${APP_NAME} is already running, PID=${pid}"
else
nohup java -jar $VM_OPT -Dspring.config.location=$YUM_FILE_PATH $APP_NAME >test.log 2>&1 &
PID=$(echo $!)
echo "${APP_NAME} start success, PID=$! YUM_FILE_PATH=${YUM_FILE_PATH}"
fi
}
start;
exit 0
运行脚本 ./bootstart.sh
此处注意,如果你是在windows环境的txt中编写的脚本,直接copy到linux环境中会报错:
这个报错是因为文件使用的windows的编码,需要更改成linux编码,在vscode中打开文件
右下角需要设置为LF
启动日志会在同目录下的test.log输出
配置为系统服务,设置开机自启动
1.设置启动脚本start_test.sh
#!/bin/bash
# 配置JAR文件名,把它改成你的Jar文件名
SPRING_JARFILE=test.jar
# 配置文件名
SPRING_PROPERTIESFILE=application.properties
# 日志文件位置
LOG_FILE=test.log
# 获取.sh所在路径
INSTALL_DIR=$(cd $(dirname $0);pwd)
# 配置JDK路径
JAVA_HOME=/usr/local/java/jdk
# 设定PATH,不设会无法使用java命令
PATH=$JAVA_HOME/bin:$PATH
# 后台方式运行jar包
nohup java -jar $INSTALL_DIR/$SPRING_JARFILE -Dspring.config.location=$INSTALL_DIR/$SPRING_PROPERTIESFILE > $INSTALL_DIR/$LOG_FILE 2>&1 &
2.设置关闭脚本stop_test.sh
#!/bin/sh
# 配置JAR文件名,把它改成你的Jar文件名
SPRING_JARFILE=test.jar
# 获取.sh所在路径
INSTALL_DIR=$(cd $(dirname $0);pwd)
# 获取当前项目运行的进程ID
PID=$(ps -ef | grep "java -jar $INSTALL_DIR/$SPRING_JARFILE" | grep -v grep | awk '{print $2}')
if [ -z "$PID" ]; then
# 如果没找到则提示未运行
echo "Spring Boot应用未在运行中."
else
# 如果找到了,正常终止进程
kill $PID
echo "Spring Boot应用已停止."
fi
3.新建一个服务文件 test.service
vim /etc/systemd/system/test.service
内容为
[Unit]
Description=start test.jar
After=syslog.target network.target
[Service]
Type=forking
ExecStart=/usr/local/data/start_test.sh
ExecStop=/usr/local/data/stop_test.sh
Restart=always
RestartSec=30
[Install]
WantedBy=multi-user.target
4.服务器里执行systemctl enable localsense命令,即可启用localsense服务
使用systemctl start myService即可启动服务,systemctl stop myService即可关停服务,system status myService命令可以看到服务的状态