启动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表示正常结束。