侧边栏壁纸
博主头像
DOKI SEKAI博主等级

行动起来,活在当下

  • 累计撰写 114 篇文章
  • 累计创建 38 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

启动停止java程序的脚本(守护进程)

君
2024-10-23 / 0 评论 / 0 点赞 / 18 阅读 / 4148 字

可以使用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

脚本说明:

  1. 配置部分

    • APP_NAME: Java应用的JAR文件名。
    • APP_DIR: 应用所在的目录。
    • JAVA_CMD: 启动命令,这里用的是 java -jar,如果需要其他启动方式可以修改。
    • PID_FILE: 存储应用PID的文件,用于检测应用是否运行。
    • LOG_FILE: 应用的日志文件。
  2. 功能

    • start: 启动应用,并将日志重定向到 app.log 文件。
    • stop: 终止应用进程,并删除 PID_FILE
    • restart: 先停止,再启动应用。
    • status: 检查应用是否正在运行。
    • monitor: 一个简单的守护进程,每隔10秒检查一次应用是否在运行,如果未运行则自动重新启动。

使用方法:

  1. 将脚本保存为 app_control.sh
  2. 确保脚本有执行权限:
    chmod +x app_control.sh
    
  3. 使用脚本:
    • 启动应用:
      ./app_control.sh start
      
    • 停止应用:
      ./app_control.sh stop
      
    • 重启应用:
      ./app_control.sh restart
      
    • 检查状态:
      ./app_control.sh status
      
    • 启动守护进程自动重启:
      ./app_control.sh monitor
      

这个脚本简单易用,并能满足基本的Java应用管理需求。如果需要更高级的功能,可以扩展此脚本。

0

评论区