启动jar包的shell脚本 jar_launcher.sh
# JAR包文件路径
JAR_FILE="/home/services/user/backend-0.0.1-SNAPSHOT.jar"

start() {
  # 检查JAR包是否已经在运行
  if pgrep -f $JAR_FILE > /dev/null; then
    echo "JAR包已经在运行中."
  else
    echo "正在启动JAR包..."
    nohup java -jar $JAR_FILE > /dev/null 2>&1 &
    echo "JAR包已成功启动."
  fi
}

stop() {
  # 查找并终止JAR包进程
  if pgrep -f $JAR_FILE > /dev/null; then
    echo "正在停止JAR包..."
    pkill -f $JAR_FILE
    echo "JAR包已成功停止."
  else
    echo "JAR包未在运行中."
  fi
}

case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  restart)
    stop
    sleep 1
    start
    ;;
  *)
    echo "使用方法: $0 {start|stop|restart}"
    exit 1
    ;;
esac

exit 0

java程序启动shell脚本

// 指定要执行的shell脚本路径
        String shellScriptPath = "/home/services/user/jar_launcher.sh " + param;

        // 使用Runtime的exec方法执行shell脚本
        try {
            Process process = Runtime.getRuntime().exec(shellScriptPath);

            // 读取并输出进程的输出
            BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }

            // 等待进程结束并获取返回值
            int exitCode = process.waitFor();
            System.out.println("Shell script exited with code: " + exitCode);

        } catch (IOException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

这段脚本是一个简单的启动和停止JAR包的脚本。该脚本定义了三个命令:start、stop和restart,分别用于启动、停止和重启JAR包。

脚本中的JAR_FILE变量指定了JAR包文件的路径,根据你的需要进行修改。

start()函数用于启动JAR包。它会首先检查JAR包是否已经在运行,如果是,则输出"JAR包已经在运行中";否则,使用nohup命令在后台运行Java命令启动JAR包,并将输出重定向到/dev/null,以保持安静运行。启动成功后,输出"JAR包已成功启动"。

stop()函数用于停止JAR包。它会查找并终止与JAR包文件路径匹配的进程。如果找到匹配的进程,则使用pkill命令终止进程;否则,输出"JAR包未在运行中"。

case语句根据用户传入的参数选择执行相应的命令。如果用户传入的参数是start,则执行start函数;如果是stop,则执行stop函数;如果是restart,则先执行stop函数,等待1秒后再执行start函数;否则输出使用方法。

最后,脚本退出,并返回状态码0表示正常结束。