システム導入-jarパッケージが更新されると自動的にプロジェクトを再起動します.


1.linuxにinotifywaitをインストールしてファイル監視を実現する
(1)noitifyダウンロードアドレス:http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
(2)サーバへのアップロード
(3)解凍インストール
tar -zxvf inotify-tools-3.14.tar.gz

解凍されたファイルに移動
cd inotify-tools-3.14

configureの実行
./configure

make
 
make
 
make install

インストールに成功すると、/usr/local/binの下にinotifywaitinotifywatchのコマンドがあります.
2.shellスクリプトの作成
系统部署-当jar包更新时自动重新启动项目_第1张图片
これは私のディレクトリです.pdはjavaプロジェクトのjarパッケージを入れます.pd_Web放コンパイル後のフロントエンドプロジェクトjsなどのコード、scriptはリスニングされたスクリプトファイル、springbootの起動スクリプトファイルです
pdディレクトリ
系统部署-当jar包更新时自动重新启动项目_第2张图片
pd_Webディレクトリ
系统部署-当jar包更新时自动重新启动项目_第3张图片
scriptディレクトリ
系统部署-当jar包更新时自动重新启动项目_第4张图片
springboot.shの内容はjarパケットの状態を制御するために使用されます(javaコマンドを使用するとjdkを自分で事前にインストールする必要があります)
#! /bin/bash
# springboot jar        ,     jar  
CURRENT_PATH=/home/ftpuser/pd/
LOG=/home/ftpuser/script/springboot.log
JAR=$(find $CURRENT_PATH -maxdepth 1 -name "*.jar")
PID=$(ps -ef | grep $JAR | grep -v grep | awk '{ print $2 }')

case "$1" in
    start)
        if [ ! -z "$PID" ]; then
            echo "$JAR     ,   : $PID"
        else
            echo -n -e "   $JAR ... 
" cd $CURRENT_PATH nohup java -Dloader.path=$CURRENT_PATH,resources,lib -jar $JAR >$LOG 2>&1 & if [ "$?"="0" ]; then echo " , " else echo " " fi fi ;; stop) if [ -z "$PID" ]; then echo "$JAR , " else echo " $JAR ..." kill -9 $PID if [ "$?"="0" ]; then echo " " else echo " " fi fi ;; restart) ${0} stop ${0} start ;; kill) echo " $JAR" killall $JAR if [ "$?"="0" ]; then echo " " else echo " " fi ;; status) if [ ! -z "$PID" ]; then echo "$JAR " else echo "$JAR " fi ;; *) echo "Usage: ./springboot.sh {start|stop|restart|status|kill}" >&2 exit 1 esac

watch_file_change.shはpdディレクトリのjarパケットが変更するかどうかを傍受し、変更時にspringbootを自動的に呼び出す.shのrestartコマンド
#!/bin/bash
src="/home/ftpuser/pd/"
log="/home/ftpuser/script/watch.log"
fileType="jar"
/usr/local/bin/inotifywait -mr --timefmt '%d/%m/%y %H:%M' --format '%T %w %f' -e close_write $src | while read DATE TIME DIR FILE; do

FILECHANGE=${DIR}${FILE}

if [[ $FILECHANGE =~ $fileType ]]
then
        echo “At ${TIME} on ${DATE}, file $FILECHANGE was change” >> $log
        /home/ftpuser/script/springboot.sh restart >> $log
fi
done

 
はい.shファイルx実行権限の追加
chmod u+x springboot.sh
chmod u+x watch_file_change.sh

watch_の実行file_change.shファイルを開いて傍受を変更する
./watch_file_change.sh

プロセスが正常にオープンしたかどうかを確認
[root@instance-g23bz0zz script]# ps aux|grep *


 
これで終わり、
jarパッケージのアイテムを単独で実行する場合はspringbootを実行できます.sh
./springboot.sh start