使用 Bash 脚本管理 Java 应用:从启动到停止

在开发和运维过程中,我们经常需要启动、停止、重启或检查 Java 应用程序的运行状态。手动执行这些操作可能会很繁琐,特别是在需要频繁管理多个应用时。为了简化这些任务,我们可以编写一个 Bash 脚本来自动化这些过程。下面是一个示例脚本,用于管理一个名为 xxx.jar 的 Java 应用。
首先,我们需要一个 Bash 脚本。这个脚本将包含启动、停止、重启和检查应用状态的功能。

#!/bin/bash  
# 这里可替换为你自己的执行程序,其他代码无需更改  
APP_NAME=替换成你自己的包名.jar  
  
# 使用说明  
usage() {  
    echo "Usage: sh 脚本名.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(){  
    is_exist  
    if [ $? -eq 0 ]; then  
        echo "${APP_NAME} is already running. pid=${pid} ."  
    else  
        nohup java -Xms512m -Xmx1g -jar -Xdebug -Xrunjdwp:transport=dt_socket,address=7004,server=y,suspend=n $PWD/$APP_NAME --spring.profiles.active=dev --server.port=8082 > nohup.log 2>&1 &  
        echo "${APP_NAME} start success"  
    fi  
}  
  
# 停止方法  
stop(){  
    is_exist  
    if [ $? -eq 0 ]; then  
        kill -9 $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  
    sleep 3   
    start  
}  
  
# 根据输入参数执行对应方法  
case "$1" in  
    "start")  
        start  
        ;;  
    "stop")  
        stop  
        ;;  
    "status")  
        status  
        ;;  
    "restart")  
        restart  
        ;;  
    *)  
        usage  
        ;;  
esac

如何使用脚本:

保存脚本:将上述代码保存为一个文件,例如 manage_app.sh。
添加执行权限:在命令行中,使用 chmod +x manage_app.sh 命令为脚本添加执行权限。
运行脚本:使用 ./manage_app.sh 命令后跟一个参数(start、stop、restart 或 status)来执行相应的操作。例如,要启动应用,可以运行 ./manage_app.sh start。
脚本功能详解
is_exist:检查 permission.jar 是否正在运行,如果是,则返回其 PID;否则返回 1。
start:如果应用未运行,则使用 nohup 命令在后台启动它,并记录日志到 nohup.log 文件。
stop:如果应用正在运行,则使用 kill -9 命令强制停止它。
status:显示应用的运行状态和 PID(如果正在运行)。
restart:先停止应用,等待 3 秒后重新启动它。

注意事项
脚本中的 APP_NAME 变量应设置为你想要管理的 Java 应用的 JAR 文件名。
你可以根据需要调整 JVM 参数(如 -Xms512m 和 -Xmx1g)和 Java 应用参数(如 --spring.profiles.active=dev 和 --server.port=8082)。
使用 kill -9 强制停止应用可能会导致数据丢失或不一致,因此请谨慎使用。在可能的情况下,最好先尝试使用 kill 命令(不带 -9 选项)来优雅地停止应用。
如果你想要将日志输出到不同的文件或位置,可以修改 nohup 命令中的重定向部分。

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码客笔记

你的鼓励将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值