139 字
1 分钟
Linux 管理 JAR 服务的 Shell 脚本
2026-01-02

在生产环境中直接用 java -jar 启动服务不便管理,以下脚本封装了 start / stop / restart / status 四个操作,支持后台运行。

尚未安装 JDK?参见 Linux 手动安装 JDK 1.8 并配置环境变量

使用方法#

sh server.sh start # 启动服务
sh server.sh status # 查看状态
sh server.sh stop # 停止服务
sh server.sh restart # 重启服务

脚本内容#

将以下内容保存为 server.sh,修改顶部的 APP_NAMEAPP_PATH 为实际值:

server.sh
#!/bin/bash
# 修改为实际的 JAR 文件名(不含路径)
APP_NAME=app.jar
# 修改为 JAR 文件所在目录
APP_PATH=/opt/app/jar
usage() {
echo "Usage: sh server.sh [start|stop|restart|status]"
exit 1
}
is_exist() {
pid=$(ps -ef | grep $APP_NAME | grep -v grep | awk '{print $2}')
if [ -z "${pid}" ]; then
return 1
else
return 0
fi
}
start_log() {
is_exist
if [ $? -eq 0 ]; then
echo "${APP_NAME} 启动成功!pid=${pid}"
else
echo "${APP_NAME} 启动失败,请检查后重试"
fi
}
start() {
is_exist
if [ $? -eq 0 ]; then
echo "${APP_NAME} is already running. pid=${pid}"
else
nohup java -jar ${APP_PATH}/${APP_NAME} > /dev/null 2>&1 &
start_log
fi
}
stop() {
is_exist
if [ $? -eq 0 ]; then
kill -9 $pid
echo "${APP_NAME} 已关闭!pid=${pid}"
else
echo "${APP_NAME} is not running"
fi
}
status() {
is_exist
if [ $? -eq 0 ]; then
echo "${APP_NAME} is running. Pid is ${pid}"
else
echo "${APP_NAME} is not running."
fi
}
restart() {
stop
echo "${APP_NAME} 准备重启..."
sleep 5
start
}
case "$1" in
"start") start ;;
"stop") stop ;;
"status") status ;;
"restart") restart ;;
*) usage ;;
esac
TIP

如果 JAR 包名称包含版本号等动态部分(如 app-1.0.0.20240101.jar),可将 APP_NAME 设置为固定前缀,并将启动命令改为:

nohup java -jar ${APP_PATH}/${APP_NAME}*.jar > /dev/null 2>&1 &

赋予执行权限#

chmod +x server.sh
分享

如果这篇文章对你有帮助,欢迎分享给更多人!

Linux 管理 JAR 服务的 Shell 脚本
https://blog.olinl.com/posts/jar-service-script/
作者
顾拾柒
发布于
2026-01-02
许可协议
CC BY-NC-SA 4.0

目录