若依jar包运行脚本,从零到一:用Bash脚本实现JAR应用的启动、停止与监控

 

脚本使用说明

  1. 启动应用sh app.sh start
  2. 停止应用sh app.sh stop
  3. 检查应用状态sh app.sh status
  4. 重启应用sh app.sh restart

注意事项

  • 请确保你的系统上安装了 Java 环境,并且 ruoyi-admin.jar 文件存在于脚本可以访问的路径中。
  • 脚本中使用了 lsof 命令来检查端口占用情况,但这是一个拼写错误。通常,我们使用 lsofnetstatss 命令来实现这个功能。你需要根据系统环境替换正确的命令。
  • 脚本中的 nohup 也是拼写错误,正确的应该是 nohup
  • nobup.log 文件用于记录应用启动时的输出,请确保脚本对该文件有写入权限。
#!/bin/bash  
APP_NAME=ruoyi-admin.jar  
PORT=9021  # 假设你的应用绑定到这个端口  
  
usage() {  
    echo "Usage: sh app.sh [start|stop|restart|status]"  
    exit 1  
}  
  
is_exist(){  
    pid=$(lsof -t -i :$PORT)  # 使用lsof命令查找使用指定端口的PID  
    if [ -z "$pid" ]; then  
        return 1  
    else  
        return 0  
    fi  
}  
  
start(){  
    is_exist  
    if [ $? -eq 0 ]; then  
        echo "${APP_NAME} is already running on port $PORT."  
    else  
        # nohup java -Xms256m -Xmx512m -jar $APP_NAME > /dev/null 2>&1 &  
        nohup java -Xms256m -Xmx512m -jar $APP_NAME >nobup.log 2>&1 & 
    fi  
}  
  
stop(){  
    is_exist  
    if [ $? -eq 0 ]; then  
        kill -9 $pid  # 关闭找到的进程  
        echo "Stopped ${APP_NAME} running on port $PORT."  
    else  
        echo "${APP_NAME} is not running on port $PORT."  
    fi  
}  
  
status(){  
    is_exist  
    if [ $? -eq 0 ]; then  
        echo "${APP_NAME} is running on port $PORT. Pid is $pid"  
    else  
        echo "${APP_NAME} is NOT running on port $PORT."  
    fi  
}  
  
restart(){  
    stop  
    start  
}  
  
case "$1" in  
    "start")  
        start  
        ;;  
    "stop")  
        stop  
        ;;  
    "status")  
        status  
        ;;  
    "restart")  
        restart  
        ;;  
    *)  
        usage  
        ;;  
esac

AI注释版

#!/bin/bash  
# 声明应用的名称和使用的端口号  
APP_NAME=ruoyi-admin.jar  
PORT=9021  # 假设应用绑定到这个端口  
  
# 使用函数来显示脚本的使用方式,并退出脚本  
usage() {  
    echo "Usage: sh app.sh [start|stop|restart|status]"  
    exit 1  
}  
  
# 检查应用是否已经在运行  
is_exist(){  
    # 使用 lsof 命令查找使用指定端口的进程ID,这里应该是 lsof 的拼写错误,应为 lsof 或 lsof 的替代品如 netstat、ss  
    pid=$(lsof -t -i :$PORT)  
    if [ -z "$pid" ]; then  
        # 如果 pid 为空,表示没有找到对应的进程,返回 1  
        return 1  
    else  
        # 如果找到了进程,返回 0  
        return 0  
    fi  
}  
  
# 启动应用的函数  
start(){  
    # 检查应用是否已经在运行  
    is_exist  
    if [ $? -eq 0 ]; then  
        # 如果应用已经在运行,则输出提示信息  
        echo "${APP_NAME} is already running on port $PORT."  
    else  
        # 如果应用没有运行,则启动应用,并将输出重定向到 nobup.log 文件  
        # 注意:nohup 应该是 nohup 的拼写错误  
        nohup java -Xms256m -Xmx512m -jar $APP_NAME >nobup.log 2>&1 &  
    fi  
}  
  
# 停止应用的函数  
stop(){  
    # 检查应用是否在运行  
    is_exist  
    if [ $? -eq 0 ]; then  
        # 如果应用在运行,则强制终止该进程  
        kill -9 $pid  
        # 输出停止应用的提示信息  
        echo "Stopped ${APP_NAME} running on port $PORT."  
    else  
        # 如果应用没有运行,则输出提示信息  
        echo "${APP_NAME} is not running on port $PORT."  
    fi  
}  
  
# 检查应用状态的函数  
status(){  
    # 检查应用是否在运行  
    is_exist  
    if [ $? -eq 0 ]; then  
        # 如果应用在运行,则输出应用的运行状态和进程ID  
        echo "${APP_NAME} is running on port $PORT. Pid is $pid"  
    else  
        # 如果应用没有运行,则输出提示信息  
        echo "${APP_NAME} is NOT running on port $PORT."  
    fi  
}  
  
# 重启应用的函数  
restart(){  
    # 停止应用  
    stop  
    # 启动应用  
    start  
}  
  
# 根据传入的参数执行相应的操作  
case "$1" in  
    "start")  
        start  # 启动应用  
        ;;  
    "stop")  
        stop  # 停止应用  
        ;;  
    "status")  
        status  # 检查应用状态  
        ;;  
    "restart")  
        restart  # 重启应用  
        ;;  
    *)  
        usage  # 如果参数不正确,则显示使用方式  
        ;;  
esac

相关推荐

  1. shell启动jar 脚本

    2024-03-20 04:32:03       18 阅读
  2. shell脚本启动jar

    2024-03-20 04:32:03       14 阅读
  3. Linux编写SH脚本启动单个jar应用

    2024-03-20 04:32:03       43 阅读
  4. 后端jar部署常见运行停止命令

    2024-03-20 04:32:03       14 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-20 04:32:03       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-20 04:32:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-20 04:32:03       20 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-20 04:32:03       20 阅读

热门阅读

  1. 亚马逊认证考试系列 - 知识点 - WAF简介

    2024-03-20 04:32:03       17 阅读
  2. UDF提权

    UDF提权

    2024-03-20 04:32:03      21 阅读
  3. Mongodb使用手册

    2024-03-20 04:32:03       16 阅读
  4. Nginx安装教程

    2024-03-20 04:32:03       19 阅读
  5. 【NC15434】wyh的迷宫

    2024-03-20 04:32:03       23 阅读
  6. LeetCode //C - 239. Sliding Window Maximum

    2024-03-20 04:32:03       17 阅读
  7. 5.1.4、【AI技术新纪元:Spring AI解码】Amazon Bedrock

    2024-03-20 04:32:03       17 阅读
  8. 2024.3.19 ARM

    2024-03-20 04:32:03       23 阅读
  9. LeetCode 2864.最大二进制奇数

    2024-03-20 04:32:03       22 阅读