linux启动jar包sh脚本

 

sh脚本(直接重启,推荐):

复制代码
#!/bin/bash

# 配置部分
JAR_PATH="/xxx/xxxxx/xxxxxx/xxxxx.jar"  # JAR文件路径
LOG_PATH="/xxx/xxxx/xxxxx/xxxxx.log"  # 日志文件路径

# 获取正在运行的进程的PID
PID=$(ps -ef | grep xxxxx.jar | grep -v grep | awk '{print $2}')

# 检查PID是否存在
if [ -n "$PID" ]; then
  echo "Found existing process with PID: $PID"
  echo "Stopping the existing process..."
  kill -9 $PID
  echo "Existing process stopped."
else
  echo "No existing process found."
fi

# 启动新的进程
echo "Starting process..."
nohup java -jar $JAR_PATH > $LOG_PATH 2>&1 &

# 获取新的PID
NEW_PID=$!
echo "New process started with PID: $NEW_PID"

# 打开日志文件进行实时监视
echo "Tailing log file: $LOG_PATH"
tail -f $LOG_PATH
复制代码

 

sh脚本(直接重启,带日志文件备份-推荐):

复制代码
#!/bin/bash

# 配置部分
JAR_PATH="/xxx/xxxxx/xxxxxx/xxxx.jar"  # JAR文件路径
LOG_PATH="/xxx/xxxxx/xxxxxx/logs/run.log"  # 日志文件路径

# 获取当前日期和时间
CURRENT_DATE=$(date +"%Y%m%d")
LOG_DIR=$(dirname $LOG_PATH)
LOG_BASE_NAME=$(basename $LOG_PATH .log)

# 生成备份日志文件名
BACKUP_LOG_PATH="${LOG_DIR}/${LOG_BASE_NAME}_${CURRENT_DATE}"

# 找到合适的序号
i=1
while [ -f "${BACKUP_LOG_PATH}_${i}.log" ]; do
  i=$((i + 1))
done
BACKUP_LOG_PATH="${BACKUP_LOG_PATH}_${i}.log"

# 备份日志文件
if [ -f "$LOG_PATH" ]; then
  echo "Backing up log file to $BACKUP_LOG_PATH"
  mv "$LOG_PATH" "$BACKUP_LOG_PATH"
else
  echo "No existing log file to back up."
fi

# 获取正在运行的进程的PID   -----------------------------------------------也要修改jar名-----------------------------------------------
PID=$(ps -ef | grep xxxx.jar | grep -v grep | awk '{print $2}')

# 检查PID是否存在
if [ -n "$PID" ]; then
  echo "Found existing process with PID: $PID"
  echo "Stopping the existing process..."
  kill -9 $PID
  echo "Existing process stopped."
else
  echo "No existing process found."
fi

# 启动新的进程
echo "Starting process..."
nohup java -jar $JAR_PATH > $LOG_PATH 2>&1 &

# 获取新的PID
NEW_PID=$!
echo "New process started with PID: $NEW_PID"

# 打开日志文件进行实时监视
echo "Tailing log file: $LOG_PATH"
tail -f $LOG_PATH
复制代码

 

 

sh脚本(带参执行 stop / start / restart):

复制代码
#!/bin/sh
#这里需要设置2个变量,jar包需要和这个sh 在一个目录
#jar包名字
jarName='dataAccess-business.jar'
#输出的log 以及pid.log的前缀名字
logName='business'
#将要执行的jar包
tpid='ps aux | grep -c ${jarName}'
start() {
if [ $tpid -le 1 ]; then
java -Xms512m -Xmx1024m -jar ./${jarName} 5 > ./${logName}_console.log &
        echo $! > ./${logName}_pid.log
else
        echo "alread start. PID:`cat ./${logName}_pid.log`"
        exit 0
fi
}

stop(){
pid=`cat ./${logName}_pid.log`
echo "Kill pid:$pid"
kill -9 $pid
#rm ./${logName}_pid.log
#清空 log 文件
>./${logName}_pid.log
}

case "$1" in
        start)
                start
        ;;
        stop)
                stop
        ;;
        restart)
                stop
                start
        ;;
        *)
                 printf 'Usage: %s {start|stop|restart}\n' "$prog"
                exit 1
                ;;
                esac


#使用方法
#./myapp.sh start
#./myapp.sh stop
#./myapp.sh restart
复制代码

 

posted @   zagwk  阅读(532)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示