日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁(yè) > 科技  > 軟件

手把手教你寫一個(gè)Shell腳本部署你的服務(wù)

來源: 責(zé)編: 時(shí)間:2023-11-28 09:33:47 271觀看
導(dǎo)讀我們都知道,在開發(fā)的過程中,有很多部署自己微服務(wù)的方式,其中有各種各樣的不同操作,比如使用 docker 打包為鏡像的方式,還有基礎(chǔ)使用 jar 包的方式進(jìn)行部署,但是呢?使用 jar 包部署,那就離不開這個(gè)啟動(dòng) jar 包的腳本命令,總不

我們都知道,在開發(fā)的過程中,有很多部署自己微服務(wù)的方式,其中有各種各樣的不同操作,比如使用 docker 打包為鏡像的方式,還有基礎(chǔ)使用 jar 包的方式進(jìn)行部署,但是呢?使用 jar 包部署,那就離不開這個(gè)啟動(dòng) jar 包的腳本命令,總不能每次都是直接自己手動(dòng)殺端口,然后再重新啟動(dòng)吧,今天了不起來帶大家看一下這個(gè) Shell 腳本,并且寫一個(gè) Shell 腳本通用給大家,拿來可用。B2328資訊網(wǎng)——每日最新資訊28at.com

如果想直接拿這個(gè)腳本改一下用的,不想看這個(gè)基礎(chǔ)內(nèi)容的,可以直接拉到最后了。B2328資訊網(wǎng)——每日最新資訊28at.com

1.查看自己當(dāng)前系統(tǒng)默認(rèn)的 Shell

echo $SHELL

輸出:/bin/bashB2328資訊網(wǎng)——每日最新資訊28at.com

2.查看系統(tǒng)支持的Shell

cat /etc/shells

輸出:B2328資訊網(wǎng)——每日最新資訊28at.com

/bin/sh /bin/bash /usr/bin/sh /usr/bin/bashB2328資訊網(wǎng)——每日最新資訊28at.com

也就是說,我們的云服務(wù)器是支持我們?cè)谶@里給他安排 Shell 腳本的B2328資訊網(wǎng)——每日最新資訊28at.com

我們這時(shí)候先來安排一下 sh 的文件,創(chuàng)建一個(gè)文件夾,然后在其中創(chuàng)建一個(gè) sh 的文件。B2328資訊網(wǎng)——每日最新資訊28at.com

mkdir /usr/local/shelltest

touch test.sh

創(chuàng)建完成我們編輯一下內(nèi)容B2328資訊網(wǎng)——每日最新資訊28at.com

vim test.sh

#!/bin/bashecho "Hello World Shell"

然后我們出來運(yùn)行一下我們的 Shell 的第一個(gè)腳本B2328資訊網(wǎng)——每日最新資訊28at.com

bash test.sh

出來的結(jié)果是 Hello World Shell.B2328資訊網(wǎng)——每日最新資訊28at.com

我們知道其實(shí) Shell腳本沒那么復(fù)雜,一個(gè)啟動(dòng) jar 包的啟動(dòng),可能用到的用法就一些,我們來看一下另外的幾個(gè)必備的語(yǔ)法B2328資訊網(wǎng)——每日最新資訊28at.com

if

if ...then        ...else    ...fi

接下來我們看一段腳本,來根據(jù)腳本分析B2328資訊網(wǎng)——每日最新資訊28at.com

start() {  echo ""  pid=$(ps -ef | grep $jar_name | grep -v grep | awk '{print $2}')  if [ -z $pid ]; then    cd $jar_path  # 這里轉(zhuǎn)到j(luò)ar包目錄執(zhí)行命令,是為了使用jar_path下的config文件,貌似java程序只能識(shí)別當(dāng)前執(zhí)行命令目錄下的配置,否則就是使用已打入Jar包的配置文件。    nohup java -jar $jar_name >$log_path 2>&1 &    pid=$(ps -ef | grep $jar_name | grep -v grep | awk '{print $2}')    echo "應(yīng)用 ${jar_name}啟動(dòng)成功,pid=${pid}"    # tail -f $log_path   else    echo "應(yīng)用 ${jar_name} 正在運(yùn)行,pid = ${pid}"  fi  echo ""}

start() 顧名思義,這明顯就是一個(gè) start 方法,方法體的內(nèi)容則是花括號(hào)內(nèi)的內(nèi)容。B2328資訊網(wǎng)——每日最新資訊28at.com

echo 我們都知道了,就是輸出個(gè)內(nèi)容
ps -ef | grep

這個(gè)命令更不用多說了,那直接就是用來查詢應(yīng)用的端口號(hào)的,后面跟著我們的jar_name 實(shí)際上就是一個(gè)變量,直接獲取的我們?cè)诜椒ㄍ饷娑x的B2328資訊網(wǎng)——每日最新資訊28at.com

后面的awk其實(shí)就相當(dāng)于是信息的讀入B2328資訊網(wǎng)——每日最新資訊28at.com

也就是說,我們?cè)趫?zhí)行 sh start.sh start 的方法的時(shí)候,然后會(huì)讀取我們接下來輸入的內(nèi)容,接下來就進(jìn)入了判斷環(huán)節(jié)。B2328資訊網(wǎng)——每日最新資訊28at.com

cd $jar_path  # 這里轉(zhuǎn)到j(luò)ar包目錄執(zhí)行命令,是為了使用jar_path下的config文件,貌似java程序只能識(shí)別當(dāng)前執(zhí)行命令目錄下的配置,否則就是使用已打入Jar包的配置文件。 nohup java -jar $jar_name >$log_path 2>&1 & 這個(gè)則是我們最重要的啟動(dòng)Jar包的版本

nohup 這個(gè)命令的標(biāo)識(shí)則是我們使用后臺(tái)啟動(dòng)的方式,不必再關(guān)注如果執(zhí)行jar -jar 的時(shí)候,我們關(guān)閉了當(dāng)前的窗口,結(jié)果我們的服務(wù)就被迫終止了,而后面,我們還貼心的又查詢了一下這個(gè)服務(wù),然后把我們的服務(wù)是否啟動(dòng)成功給大家展示出來,如果運(yùn)行之后,就會(huì)出現(xiàn) 應(yīng)用xxx啟動(dòng)成功,pid = xxxxx的標(biāo)志了。B2328資訊網(wǎng)——每日最新資訊28at.com

看完了我們的啟動(dòng)命令,接下來就得看我們的停止命令了。B2328資訊網(wǎng)——每日最新資訊28at.com

stop() {  echo ""  pid=$(ps -ef | grep $jar_name | grep -v grep | awk '{print $2}')  if [ -z $pid ]; then # -z 是判斷是否為空    echo "${jar_name}未運(yùn)行!"  else    echo "準(zhǔn)備關(guān)閉進(jìn)程$pid"    kill -9 $pid    sleep 0.5    echo "${jar_name}已關(guān)閉!"  fi  echo ""}

這個(gè)stop的方法幾句比較簡(jiǎn)單了,接受收入內(nèi)容,然后判斷這個(gè) jar 包是否在運(yùn)行當(dāng)中,如果運(yùn)行的話,那么找到這個(gè)端口,然后關(guān)閉到這個(gè)進(jìn)程號(hào),最后給我們輸出一個(gè) xxxx已關(guān)閉B2328資訊網(wǎng)——每日最新資訊28at.com

我們?cè)賮砜匆粋€(gè)重啟的方法:B2328資訊網(wǎng)——每日最新資訊28at.com

restart() {  stop  sleep 2  echo "停止完成,準(zhǔn)備啟動(dòng)jar包"  start}

這個(gè)更不用說了,我們寫了 start 和 stop  只要在這個(gè) restart里面去執(zhí)行一下這個(gè) stop 然后等待一會(huì),然后再啟動(dòng)就完事了。B2328資訊網(wǎng)——每日最新資訊28at.com

完整的腳本如下B2328資訊網(wǎng)——每日最新資訊28at.com

#替換成你的jar包jar_name=cloud-ui-zhiyikeji.jarjar_path=/usr/webjar/log_path=/usr/webjar/logs/`date +%y-%m-%d`_out.log#指向自定義jdk#export JAVA_HOME=/usr/jdk/jdk1.8.0_381#export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar#export PATH=$JAVA_HOME/bin:$PATHstop() {  echo ""  pid=$(ps -ef | grep $jar_name | grep -v grep | awk '{print $2}')  if [ -z $pid ]; then # -z 是判斷是否為空    echo "${jar_name}未運(yùn)行!"  else    echo "準(zhǔn)備關(guān)閉進(jìn)程$pid"    kill -9 $pid    sleep 0.5    echo "${jar_name}已關(guān)閉!"  fi  echo ""}start() {  echo ""  pid=$(ps -ef | grep $jar_name | grep -v grep | awk '{print $2}')  if [ -z $pid ]; then    cd $jar_path  # 這里轉(zhuǎn)到j(luò)ar包目錄執(zhí)行命令,是為了使用jar_path下的config文件,貌似java程序只能識(shí)別當(dāng)前執(zhí)行命令目錄下的配置,否則就是使用已打入Jar包的配置文件。    nohup java -jar $jar_name >$log_path 2>&1 &    pid=$(ps -ef | grep $jar_name | grep -v grep | awk '{print $2}')    echo "應(yīng)用 ${jar_name}啟動(dòng)成功,pid=${pid}"    # tail -f $log_path   else    echo "應(yīng)用 ${jar_name} 正在運(yùn)行,pid = ${pid}"  fi  echo ""}status() {  echo ""  pid=$(ps -ef | grep $jar_name | grep -v grep | awk '{print $2}')  if [ -z $pid ]; then    echo "應(yīng)用 ${jar_name} 未運(yùn)行"  else    echo "應(yīng)用 ${jar_name} 正在運(yùn)行,pid = ${pid}"  fi  echo ""}restart() {  stop  sleep 2  echo "停止完成,準(zhǔn)備啟動(dòng)jar包"  start}action() {  echo "請(qǐng)輸入數(shù)字選擇要執(zhí)行的操作:1=啟動(dòng),2=重啟,3=停止,4=查看運(yùn)行狀態(tài),5=退出"  echo '你輸入的數(shù)字為:'  read a  case $a in  "1")    start    ;;  "2")    restart    ;;  "3")    stop    ;;  "4")    status    ;;  "5")    exit 1    ;;  *)    echo "輸入錯(cuò)誤,請(qǐng)重新輸入"    action    ;;  esac}action

腳本奉上,我們需要做的就是更改一下前面的jar包的路徑已經(jīng)jar包的相關(guān)內(nèi)容即可實(shí)現(xiàn)shell腳本來啟動(dòng)自己的jar包了。B2328資訊網(wǎng)——每日最新資訊28at.com

你學(xué)會(huì)了么?B2328資訊網(wǎng)——每日最新資訊28at.com

B2328資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-34602-0.html手把手教你寫一個(gè)Shell腳本部署你的服務(wù)

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 我們一起聊聊異地多活之業(yè)務(wù)定制型異地多活架構(gòu)

下一篇: Python GUI 編程:dearpygui 和 tkinter 的對(duì)比與選擇!

標(biāo)簽:
  • 熱門焦點(diǎn)
Top 主站蜘蛛池模板: 呼和浩特市| 宁城县| 皋兰县| 西乌珠穆沁旗| 阳东县| 遂溪县| 开原市| 乌鲁木齐县| 大安市| 靖江市| 莱阳市| 和顺县| 丰宁| 石门县| 洛浦县| 永川市| 台中县| 潼南县| 报价| 东平县| 华蓥市| 策勒县| 昆山市| 永州市| 永嘉县| 夹江县| 同德县| 防城港市| 古浪县| 阳泉市| 饶阳县| 仁怀市| 房山区| 永济市| 梅州市| 丹阳市| 邓州市| 上犹县| 柘城县| 海南省| 永善县|