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

當前位置:首頁 > 科技  > 軟件

手把手教你寫一個Shell腳本部署你的服務

來源: 責編: 時間:2023-11-28 09:33:47 234觀看
導讀我們都知道,在開發的過程中,有很多部署自己微服務的方式,其中有各種各樣的不同操作,比如使用 docker 打包為鏡像的方式,還有基礎使用 jar 包的方式進行部署,但是呢?使用 jar 包部署,那就離不開這個啟動 jar 包的腳本命令,總不

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

如果想直接拿這個腳本改一下用的,不想看這個基礎內容的,可以直接拉到最后了。vfM28資訊網——每日最新資訊28at.com

1.查看自己當前系統默認的 Shell

echo $SHELL

輸出:/bin/bashvfM28資訊網——每日最新資訊28at.com

2.查看系統支持的Shell

cat /etc/shells

輸出:vfM28資訊網——每日最新資訊28at.com

/bin/sh /bin/bash /usr/bin/sh /usr/bin/bashvfM28資訊網——每日最新資訊28at.com

也就是說,我們的云服務器是支持我們在這里給他安排 Shell 腳本的vfM28資訊網——每日最新資訊28at.com

我們這時候先來安排一下 sh 的文件,創建一個文件夾,然后在其中創建一個 sh 的文件。vfM28資訊網——每日最新資訊28at.com

mkdir /usr/local/shelltest

touch test.sh

創建完成我們編輯一下內容vfM28資訊網——每日最新資訊28at.com

vim test.sh

#!/bin/bashecho "Hello World Shell"

然后我們出來運行一下我們的 Shell 的第一個腳本vfM28資訊網——每日最新資訊28at.com

bash test.sh

出來的結果是 Hello World Shell.vfM28資訊網——每日最新資訊28at.com

我們知道其實 Shell腳本沒那么復雜,一個啟動 jar 包的啟動,可能用到的用法就一些,我們來看一下另外的幾個必備的語法vfM28資訊網——每日最新資訊28at.com

if

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

接下來我們看一段腳本,來根據腳本分析vfM28資訊網——每日最新資訊28at.com

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

start() 顧名思義,這明顯就是一個 start 方法,方法體的內容則是花括號內的內容。vfM28資訊網——每日最新資訊28at.com

echo 我們都知道了,就是輸出個內容
ps -ef | grep

這個命令更不用多說了,那直接就是用來查詢應用的端口號的,后面跟著我們的jar_name 實際上就是一個變量,直接獲取的我們在方法外面定義的vfM28資訊網——每日最新資訊28at.com

后面的awk其實就相當于是信息的讀入vfM28資訊網——每日最新資訊28at.com

也就是說,我們在執行 sh start.sh start 的方法的時候,然后會讀取我們接下來輸入的內容,接下來就進入了判斷環節。vfM28資訊網——每日最新資訊28at.com

cd $jar_path  # 這里轉到jar包目錄執行命令,是為了使用jar_path下的config文件,貌似java程序只能識別當前執行命令目錄下的配置,否則就是使用已打入Jar包的配置文件。 nohup java -jar $jar_name >$log_path 2>&1 & 這個則是我們最重要的啟動Jar包的版本

nohup 這個命令的標識則是我們使用后臺啟動的方式,不必再關注如果執行jar -jar 的時候,我們關閉了當前的窗口,結果我們的服務就被迫終止了,而后面,我們還貼心的又查詢了一下這個服務,然后把我們的服務是否啟動成功給大家展示出來,如果運行之后,就會出現 應用xxx啟動成功,pid = xxxxx的標志了。vfM28資訊網——每日最新資訊28at.com

看完了我們的啟動命令,接下來就得看我們的停止命令了。vfM28資訊網——每日最新資訊28at.com

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

這個stop的方法幾句比較簡單了,接受收入內容,然后判斷這個 jar 包是否在運行當中,如果運行的話,那么找到這個端口,然后關閉到這個進程號,最后給我們輸出一個 xxxx已關閉vfM28資訊網——每日最新資訊28at.com

我們再來看一個重啟的方法:vfM28資訊網——每日最新資訊28at.com

restart() {  stop  sleep 2  echo "停止完成,準備啟動jar包"  start}

這個更不用說了,我們寫了 start 和 stop  只要在這個 restart里面去執行一下這個 stop 然后等待一會,然后再啟動就完事了。vfM28資訊網——每日最新資訊28at.com

完整的腳本如下vfM28資訊網——每日最新資訊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}未運行!"  else    echo "準備關閉進程$pid"    kill -9 $pid    sleep 0.5    echo "${jar_name}已關閉!"  fi  echo ""}start() {  echo ""  pid=$(ps -ef | grep $jar_name | grep -v grep | awk '{print $2}')  if [ -z $pid ]; then    cd $jar_path  # 這里轉到jar包目錄執行命令,是為了使用jar_path下的config文件,貌似java程序只能識別當前執行命令目錄下的配置,否則就是使用已打入Jar包的配置文件。    nohup java -jar $jar_name >$log_path 2>&1 &    pid=$(ps -ef | grep $jar_name | grep -v grep | awk '{print $2}')    echo "應用 ${jar_name}啟動成功,pid=${pid}"    # tail -f $log_path   else    echo "應用 ${jar_name} 正在運行,pid = ${pid}"  fi  echo ""}status() {  echo ""  pid=$(ps -ef | grep $jar_name | grep -v grep | awk '{print $2}')  if [ -z $pid ]; then    echo "應用 ${jar_name} 未運行"  else    echo "應用 ${jar_name} 正在運行,pid = ${pid}"  fi  echo ""}restart() {  stop  sleep 2  echo "停止完成,準備啟動jar包"  start}action() {  echo "請輸入數字選擇要執行的操作:1=啟動,2=重啟,3=停止,4=查看運行狀態,5=退出"  echo '你輸入的數字為:'  read a  case $a in  "1")    start    ;;  "2")    restart    ;;  "3")    stop    ;;  "4")    status    ;;  "5")    exit 1    ;;  *)    echo "輸入錯誤,請重新輸入"    action    ;;  esac}action

腳本奉上,我們需要做的就是更改一下前面的jar包的路徑已經jar包的相關內容即可實現shell腳本來啟動自己的jar包了。vfM28資訊網——每日最新資訊28at.com

你學會了么?vfM28資訊網——每日最新資訊28at.com

vfM28資訊網——每日最新資訊28at.com

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

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 我們一起聊聊異地多活之業務定制型異地多活架構

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

標簽:
  • 熱門焦點
  • 中興AX5400Pro+上手體驗:再升級 雙2.5G網口+USB 3.0這次全都有

    2021年11月的時候,中興先后發布了兩款路由器產品,中興AX5400和中興AX5400 Pro,從產品命名上就不難看出這是隸屬于同一系列的,但在外觀設計上這兩款產品可以說是完全沒一點關系
  • Redmi Pad評測:紅米充滿野心的一次嘗試

    從Note系列到K系列,從藍牙耳機到筆記本電腦,紅米不知不覺之間也已經形成了自己頗有競爭力的產品體系,在中端和次旗艦市場上甚至要比小米新機的表現來得更好,正所謂“大丈夫生居
  • 消息稱迪士尼要拍真人版《魔發奇緣》:女主可能也找黑人演員

    8月5日消息,迪士尼確實有點忙,忙著將不少動畫改成真人版,繼《美人魚》后,真人版《白雪公主》、《魔發奇緣》也在路上了。據外媒消息稱,迪士尼將打造真人版
  • 自動化在DevOps中的力量:簡化軟件開發和交付

    自動化在DevOps中扮演著重要角色,它提升了DevOps的效能。通過自動化工具和方法,DevOps團隊可以實現以下目標:消除手動和重復性任務。簡化流程。在整個軟件開發生命周期中實現更
  • 每天一道面試題-CPU偽共享

    前言:了不起:又到了每天一到面試題的時候了!學弟,最近學習的怎么樣啊 了不起學弟:最近學習的還不錯,每天都在學習,每天都在進步! 了不起:那你最近學習的什么呢? 了不起學弟:最近在學習C
  • 中國家電海外掘金正當時|出海專題

    作者|吳南南編輯|胡展嘉運營|陳佳慧出品|零態LT(ID:LingTai_LT)2023年,出海市場戰況空前,中國創業者在海外紛紛摩拳擦掌,以期能夠把中國的商業模式、創業理念、戰略打法輸出海外,他們依
  • 品牌洞察丨服務本地,美團直播成效幾何?

    來源:17PR7月11日,美團App首頁推薦位出現“美團直播”的固定入口。在直播聚合頁面,外賣“神槍手”直播間、美團旅行直播間、美團買菜直播間等均已上線,同時
  • iQOO 11S新品發布會

    iQOO將在7月4日19:00舉行新品發布會,推出杭州亞運會電競賽事官方用機iQOO 11S。
  • 3699元!iQOO Neo8 Pro頂配版今日首銷:1TB UFS 4.0同價位唯一

    5月23日,iQOO推出了全新的iQOO Neo8系列,包含iQOO Neo8和iQOO Neo8 Pro兩個版本,其中標準版搭載高通驍龍8+,而Pro版更是首發搭載了聯發科天璣9200+旗艦
Top 主站蜘蛛池模板: 桂林市| 讷河市| 宝应县| 碌曲县| 紫金县| 沿河| 漯河市| 孟村| 米林县| 始兴县| 泉州市| 德钦县| 四平市| 巴塘县| 班戈县| 朝阳区| 阿拉善左旗| 彭阳县| 弥渡县| 垦利县| 无极县| 通江县| 揭西县| 卓资县| 浮梁县| 武强县| 郧西县| 香格里拉县| 昭觉县| 资中县| 宣恩县| 青田县| 雷波县| 吉林市| 鄂托克前旗| 东城区| 浮山县| 康保县| 南安市| 县级市| 南召县|