Linux自動釋出Java程式腳本
- 1. 編譯腳本
- 2. 啟動腳本
- 3. 停止腳本
- 4. 最終釋出腳本
1. 編譯腳本
#! /bin/bash
time="`date +%Y%m%d-%H%M`"
echo "$time"
# 進入git拉取目錄
cd /usr/local/src/sources/xxx/
# 拉取master主分支
echo "git checkout&pull origin/master"
git fetch --all
git reset --hard origin/master
git pull
# maven清理 打包 跳過測試
echo "maven build start...."
mvn clean package -e -Dmaven.test.skip=true -Pprod
# 将打包好的jar移動的運作目錄
echo "copy build target to run dir"
cp /usr/local/src/sources/xxx/target/xxx.jar /opt/data/jardata/xxx/xxx.jar
echo "^^^^^^^^^^^^^^^^^^^^^^ build success ^^^^^^^^^^^^^^^^^^^^^^^"
# 釋放緩存
echo 3 > /proc/sys/vm/drop_caches
echo "^^^^^^^^^^^^^^^^^^^^^^ 緩存釋放 success ^^^^^^^^^^^^^^^^^^^^^^^"
2. 啟動腳本
#/usr/bin/env bash
# 設定log級别 目錄是目前目錄logs下面
set log.level=INFO
set logging.path=./logs/
# 修改執行權限
chmod +x /opt/data/jardata/xxx/*.jar /opt/data/jardata/xxx/*.war
# java背景運作
nohup java -jar /opt/data/jardata/xxx/xxx.jar --spring.profiles.active=prod --server.port=8080 2>&1 &
3. 停止腳本
port8080=8080
# 查詢端口對應的pid
pid8080=$(netstat -nlp | grep :$port8080 | awk '{print $7}' | awk -F"/" '{ print $1 }');
#殺掉對應的程序,如果pid不存在,則不執行
if [ -n "$pid8080" ]; then
kill -9 $pid8080;
fi
4. 最終釋出腳本
#!/bin/sh
./stop-all.sh
./build-all.sh
sleep 10
./start-all.sh