Jar包启动、停止、重启
文章目录
- Jar包启动、停止、重启
- 1、 新建脚本
- 2、启动服务脚本代码
- 3、停止服务脚本代码
- 4、重启服务脚本
- 5、赋予脚本可执行权利
1、 新建脚本
vim 脚本明字.sh
2、启动服务脚本代码
#!/bin/bash
# 设置Java应用的名称(可根据实际情况修改)
APP_NAME="your_app"
# 设置要运行的JAR文件路径(请根据实际情况修改为你的JAR文件的真实路径)
JAR_FILE_PATH="/path/to/your_app.jar"
# 指定PID文件存放的目录(需提前确保该目录存在并有写权限,这里假设为/var/run/your_app/,可按需修改)
PID_DIR="/var/run/your_app/"
# 创建PID文件存放目录(如果不存在),确保不会因目录不存在而出错
mkdir -p $PID_DIR
# 指定日志文件存放的目录(需提前确保该目录存在并有写权限,这里假设为/var/log/your_app/,可按需修改)
LOG_DIR="/var/log/your_app/"
# 创建日志文件存放目录(如果不存在)
mkdir -p $LOG_DIR
# 获取当前日期,用于生成按日期命名的日志文件名
CURRENT_DATE=$(date +%Y%m%d)
# 使用nohup命令在后台运行JAR文件,将输出重定向到按日期命名的日志文件
nohup java -jar "$JAR_FILE_PATH" > "${LOG_DIR}/${APP_NAME}_${CURRENT_DATE}.log" 2>&1 &
# 获取刚刚在后台运行的进程的PID
PID=$!
# 将进程PID保存到指定目录下的文件,方便后续管理(例如停止服务等操作)
echo $PID > "${PID_DIR}/${APP_NAME}.pid"
# 输出提示信息
echo "The $APP_NAME has been started in the background, PID: $PID"
3、停止服务脚本代码
#!/bin/bash
# 设置应用程序名称(要和启动脚本中定义的一致)
APP_NAME="your_app"
# 指定PID文件存放的目录(与启动脚本中保持一致)
PID_DIR="/var/run/your_app/"
# 指定日志文件存放的目录(与启动脚本中保持一致)
LOG_DIR="/var/log/your_app/"
# 从指定目录下的保存PID的文件中读取进程PID
PID=$(cat "${PID_DIR}/${APP_NAME}.pid")
# 如果PID文件存在且读取到了PID值,则尝试杀死进程
if [ -n "$PID" ]; then
kill $PID
echo "The $APP_NAME has been stopped, PID: $PID"
else
echo "Can't find the PID of $APP_NAME, maybe it's not running."
fi
4、重启服务脚本
#!/bin/bash
# 设置应用程序名称(要和启动脚本中定义的一致)
APP_NAME="your_app"
# 指定PID文件存放的目录(与启动脚本中保持一致)
PID_DIR="/var/run/your_app/"
# 指定日志文件存放的目录(与启动脚本中保持一致)
LOG_DIR="/var/log/your_app/"
# 先停止正在运行的jar包
./stop_jar.sh
# 等待一段时间,确保进程完全停止,这里等待5秒,可根据实际情况调整
sleep 5
# 重新启动jar包
./run_jar.sh
5、赋予脚本可执行权利
新建或修改脚本都要赋予可执行权利
chmod +x 脚本.sh