Java应用管理脚本使用指南

本脚本提供了一个简单而全面的方式来管理Java应用,包括启动、停止、重启、检查状态、查看日志和备份。这对于日常运维非常有用。让我们逐步了解这个脚本的各部分以及如何使用它。

脚本内容及解释

脚本名称假定为ry.sh,用于管理名为df-travel-video.jar的Java应用。

脚本概览

#!/bin/sh
# ./ry.sh start 启动 stop 停止 restart 重启 status 状态
AppName=df-travel-video.jar

# JVM参数
JVM_OPTS="-Dname=$AppName  -Duser.timezone=Asia/Shanghai -Xms256m -Xmx512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDateStamps  -XX:+PrintGCDetails -XX:NewRatio=1 -XX:SurvivorRatio=30 -XX:+UseParallelGC -XX:+UseParallelOldGC"
APP_HOME=`pwd`
LOG_PATH=$APP_HOME/logs/$AppName.log

if [ "$1" = "" ];
then
    echo -e "\033[0;31m 未输入操作名 \033[0m  \033[0;34m {start|stop|restart|status} \033[0m"
    exit 1
fi

if [ "$AppName" = "" ];
then
    echo -e "\033[0;31m 未输入应用名 \033[0m"
    exit 1
fi

# 启动函数
function start(){
    PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'`

    if [ x"$PID" != x"" ]; then
        echo "$AppName is running..."
    else
        if [ ! -f "$LOG_PATH" ]; then
            touch "$LOG_PATH"
        fi
        nohup java $JVM_OPTS -jar $AppName > "$LOG_PATH" 2>&1 &
#        如果日志目录不存在,则创建
        if [ ! -d "$APP_HOME/logs" ]; then
            mkdir "$APP_HOME/logs"
        fi
        tail -f "$LOG_PATH"
    fi
}

# 停止函数
function stop(){
    echo "Stop $AppName"

    PID=""
    query(){
        PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'`
    }

    query
    if [ x"$PID" != x"" ]; then
        kill -TERM $PID
        echo "$AppName (pid:$PID) exiting..."
        while [ x"$PID" != x"" ]
        do
            sleep 1
            query
        done
        echo "$AppName exited."
    else
        echo "$AppName already stopped."
    fi
}

# 重启函数
function restart(){
    stop
    sleep 2
    start
}

# 状态函数
function status()
{
    PID=`ps -ef |grep java|grep $AppName|grep -v grep|wc -l`
    if [ $PID != 0 ];then
        echo "$AppName is running..."
    else
        echo "$AppName is not running..."
    fi
}

# 日志函数
function log()
{
    tail -f "$LOG_PATH"
}

# 备份函数
function back() {
#    将文件夹下的文件备份到当前目录下的back文件夹
    if [ ! -d "$APP_HOME/back" ]; then
        mkdir "$APP_HOME/back"
    fi
    cp  $APP_HOME/$AppName $APP_HOME/back/$AppName.`date +%Y%m%d%H%M%S`
    cp -r $APP_HOME/dist $APP_HOME/back/dist.`date +%Y%m%d%H%M%S`
    ./db.sh
    echo "back success"
}

case $1 in
    start)
    start;;
    back)
    back;;
    log)
    log;;
    stop)
    stop;;
    restart)
    restart;;
    status)
    status;;
    *)

esac

脚本详细解释

  1. 变量定义:

    • AppName: 应用的名称,用于标识要管理的Java应用。
    • JVM_OPTS: 包含JVM启动参数,用于优化应用运行。
    • APP_HOME: 应用的工作目录。
    • LOG_PATH: 应用日志文件的路径。
  2. start函数:

    • 检查应用是否已运行,如果未运行,则启动应用,并输出日志到指定文件。
  3. stop函数:

    • 查找并终止应用的进程。
  4. restart函数:

    • 结合stopstart函数来重启应用。
  5. status函数:

    • 检查并显示应用的运行状态。
  6. log函数:

    • 实时输出应用的日志文件内容。
  7. back函数:

    • 备份应用文件和相关资源,执行额外的备份操作(如调用db.sh进行数据库备份)。

使用方法

  1. 启动应用:

    ./ry.sh start
    
  2. 停止应用:

    ./ry.sh stop
    
  3. 重启应用:

    ./ry.sh restart
    
  4. 检查应用状态:

    ./ry.sh status
    
  5. 查看应用日志:

    ./ry.sh log
    
  6. 备份应用及其资源:

    ./ry.sh back
    

使用场景

  • 日常应用管理: 管理Java应用的常见任务,如启动、停止和重启。
  • 监控和日志追踪: 实时查看应用日志以监控其行为和性能。
  • 定期备份: 定期执行脚本以备份应用数据和配置,确保安全和恢复能力。

通过使用这个脚本,系统管理员和开发者可以轻松地管理Java应用,确保其稳定运行,并及时响应任何运行时问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值