【我不做人啦!Java!】1.變數、資料型別和運算子
阿新 • • 發佈:2021-01-11
需求:製作一個可選擇的jar包重啟指令碼,由於我這邊的jar包在docker內,所以有些複雜,僅做參考
#!/bin/bash source ~/.bashrc echo "----------------------------------" echo -e "\033[35m JAR包名稱序號\033[0m" echo "(1) gateway-two.jar" echo "(0) Exit Menu" echo "----------------------------------" read -p "請輸入要重新啟動的JAR包序列號:" input case $input in 1) echo "開始啟動gateway-two.jar" sleep 1 jar=gateway-two docker exec -it jar bash -c "sed -i '/jar/d' /root/.bashrc" #刪除/root/.bashrc檔案的最後一行,以防下面疊加echo時不斷增大 docker exec -it jar bash -c "echo 'export jar=$jar' >> /root/.bashrc" #把變數從宿主機外部傳進docker容器內部
docker exec -i jar bash<<'EOF' source /root/.bashrc #使之前傳進來的變數生效,因為下面會用到 pid=`ps -ef|grep ${jar}.jar|grep -v grep|awk '{print $2}'` #獲取jar程式PID號 cd /vrgv/jar/2.0/$jar/ if [ -n "${pid}" ];then kill -9 ${pid} echo "Process $jar killed!" nohup java -jar -Xms265M -Xmx512M ${jar}.jar > /vrgv/jar/2.0/logs/${jar}.log 2>&1 & echo "ReStart $jar Success!" else nohup java -jar -Xms265M -Xmx512M ${jar}.jar > /vrgv/jar/2.0/logs/${jar}.log 2>&1 & echo "Start $jar Success!" fi exit EOF ;; 0) exit;; esac
執行流程:
1.輸入jar包序列號
2.傳變數進docker容器內部
3.判斷jar程式是否存在,存在就殺死重新啟動,不存在則直接啟動
效果圖: