#!/bin/bash
DATE=$(date +%Y%m%d)
SOURCE="abc.jar"
TARGET="backup/abc.jar.jew.$DATE"
if [ -f "$SOURCE" ]; then
cp "$SOURCE" "$TARGET"
fi
rm -f abc.jar
mv abc_1.jar abc.jar
pidNum=`ps -ef | grep $SOURCE | grep -v "grep"|awk '{print $2}'`
if [ "$pidNum" = "" ];then
echo "not"
else
echo "pid : $pidNum"
kill -15 $pidNum
echo "successfully"
fi
nohup java -jar abc.jar > log.file 2>&1
后端语言java
#!/bin/bash
DATE=$(date +%Y%m%d) #输出当前日期,赋值给DATE变量,格式为20240627
SOURCE="abc.jar" #当前jar名字赋值SOURCE变量
TARGET="backup/abc.jar.jew.$DATE" #backup路径下abc.jar加当前日期后缀,备份
if [ -f "$SOURCE" ]; then #-f:判断后边的路径是否是一个常规文件。如果SOURCE存在
cp "SOURCE" "TARGET" #将SOURCE复制到TARGET,后缀有当前日期
fi #语句结尾
rm -f abc.jar #强制删除abc.jar
mv abc_1.jar abc.jar #将abc_1.jar重命名为abc.jar
pidNum=`ps -ef | grep $SOURCE | grep -v "grep"|awk '{print $2}'`
#ps -ef :查看正在运行的所有进程的完整信息;|:在这个结果的基础上;grep $SOURCE:查找文件里含有SOURCE(abc.jar)的信息;|:在这个结果的基础上;grep -v "grep":查找并去掉含有grep的进程;|:在这个结果的基础上;awk '{print $2}':格式化文本信息,输出第二个字段值,也就是进程号,赋值给pidNum。
if [ "$pidNum" = "" ];then #如果进程号为空(就证明当前没有运行,可以直接启动)
echo "not"
else #不为空,有进程运行
echo "pid : $pidNum" #输出进程号
kill -15 $pidNum #退出进程
echo "successfully" #提示退出进程成功
fi #语句结尾
nohup java -jar abc.jar > log.file 2>&1