可以使用Shell脚本来管理Java应用的启动、停止、重启和守护进程(自动重启)。下面是一个简单的脚本,可以实现这些功能:
脚本内容 (假设应用为 myapp.jar
):
#!/bin/bash
# 配置
APP_NAME="myapp.jar" # Java应用的jar文件名称
APP_DIR="/path/to/app" # Java应用所在的目录
JAVA_CMD="java -jar" # Java启动命令
PID_FILE="$APP_DIR/app.pid" # PID文件存放路径
LOG_FILE="$APP_DIR/app.log" # 日志文件路径
# 检查应用是否正在运行
is_running() {
if [ -f "$PID_FILE" ]; then
PID=$(cat "$PID_FILE")
if [ -n "$(ps -p $PID -o pid=)" ]; then
return 0
else
return 1
fi
else
return 1
fi
}
# 启动应用
start() {
if is_running; then
echo "应用已经在运行中 (PID: $(cat $PID_FILE))"
else
echo "启动应用..."
cd $APP_DIR
nohup $JAVA_CMD $APP_NAME > $LOG_FILE 2>&1 &
echo $! > $PID_FILE
echo "应用启动成功 (PID: $(cat $PID_FILE))"
fi
}
# 停止应用
stop() {
if is_running; then
echo "停止应用..."
kill -9 $(cat $PID_FILE)
rm -f $PID_FILE
echo "应用已停止"
else
echo "应用未运行"
fi
}
# 重启应用
restart() {
echo "重启应用..."
stop
start
}
# 守护进程功能
monitor() {
while true; do
if ! is_running; then
echo "应用未运行,正在重新启动..."
start
fi
sleep 10
done
}
# 帮助信息
usage() {
echo "使用方法: $0 {start|stop|restart|status|monitor}"
exit 1
}
# 检查命令
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
if is_running; then
echo "应用正在运行 (PID: $(cat $PID_FILE))"
else
echo "应用未运行"
fi
;;
monitor)
monitor
;;
*)
usage
;;
esac
脚本说明:
-
配置部分:
APP_NAME
: Java应用的JAR文件名。APP_DIR
: 应用所在的目录。JAVA_CMD
: 启动命令,这里用的是java -jar
,如果需要其他启动方式可以修改。PID_FILE
: 存储应用PID的文件,用于检测应用是否运行。LOG_FILE
: 应用的日志文件。
-
功能:
start
: 启动应用,并将日志重定向到app.log
文件。stop
: 终止应用进程,并删除PID_FILE
。restart
: 先停止,再启动应用。status
: 检查应用是否正在运行。monitor
: 一个简单的守护进程,每隔10秒检查一次应用是否在运行,如果未运行则自动重新启动。
使用方法:
- 将脚本保存为
app_control.sh
。 - 确保脚本有执行权限:
chmod +x app_control.sh
- 使用脚本:
- 启动应用:
./app_control.sh start
- 停止应用:
./app_control.sh stop
- 重启应用:
./app_control.sh restart
- 检查状态:
./app_control.sh status
- 启动守护进程自动重启:
./app_control.sh monitor
- 启动应用:
这个脚本简单易用,并能满足基本的Java应用管理需求。如果需要更高级的功能,可以扩展此脚本。
评论区