Windows

@echo off
setlocal enabledelayedexpansion

::设置端口 
set PORT=8088

:: 设置生成路径
set OLD_PATH=C:\ProgramData\Jenkins\.jenkins\workspace\plat-client-user\bex-client\bex-client-user\target

:: 设置新的存放路径
set NEW_PATH=C:\out

:: 设置jar包名
set JAR_NAME=bex-client-user.jar

::set /p port=Please enter the port :
for /f "tokens=1-5" %%a in ('netstat -ano ^| find ":%PORT%"') do (
   if "%%e%" == "" (
       set pid=%%d
   ) else (
       set pid=%%e
   )
   echo !pid!
   taskkill /f /pid !pid!
)

::复制文件
XCOPY %OLD_PATH%\%JAR_NAME%  "%NEW_PATH%" /y

::防止启动后被杀死进程
set BUILD_ID=dontKillMe 

::启动jar包
start javaw -jar %NEW_PATH%\%JAR_NAME%

Linux

#!/bin/bash
#author: fangzg
#date:2022年10月19日

PID=$(ps -ef | grep  bex-plat-client-user.jar | grep -v grep | awk '{ print $2 }')

if [ -z "$PID" ]
then
    echo "程序未启动。"
else
    echo "程序在启动中,正在停止..."
    sudo kill -9 $PID
fi


echo '开启启动程序 ...'
export BUILD_ID=dontKillMe
nohup java -jar   /var/lib/jenkins/workspace/plat-client-user/bex-client/bex-client-user/target/bex-plat-client-user.jar > run-server.log 2>&1 &



echo "starting service..."
sleep 20

#根据重启后是否有当前应用判断启动是否成功
endPID=$(ps -ef | grep  bex-plat-client-user.jar | grep -v grep | awk '{ print $2 }')

if [ -z "$endPID" ]
then
    echo "程序启动失败。"
else
    echo "程序重启成功...pid:"${endPID}
    
fi

可能出现的错误:

解决:

切换到root用户,执行命令visudo,找到下面这一行

#%wheel ALL=(ALL) NOPASSWD: ALL

在下一行输入

%smart ALL=(ALL) NOPASSWD: ALL

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐