Shell指令碼之tomcat啟動指令碼解讀

2021-08-30 11:37:20 字數 2752 閱讀 6181

shell 是乙個用c語言編寫的程式,它是使用者使用linux的橋梁。shell既是一種命令語言,又是一種程式語言。

shell 是指一種應用程式,這個應用程式提供了乙個介面,使用者通過這個介面訪問作業系統核心的服務。

可以在菜鳥教程進行學習

基本思路:把現有的正在執行的tomcat停掉,解壓war包,放到tomcat目錄下,清快取,再啟動

兩個所需指令碼deploy.sh和restart.sh都放在tomcat/bin目錄下

現在對啟動指令碼進行解析,演示發布啟動tomcat,執行命令bin/deploy.sh+要發布的war包

bin/deploy.sh (要發布的war包)
打包發布指令碼deploy.sh指令碼

#!/bin/sh

war=$1

bin=$(cd `dirname $0`; pwd)

if [ ! -n "$" ]; then

echo "***usage: $0 [project.war]"

exit 0

fiif [ ! -f "$" ]; then

echo "***error: $ does not exist."

exit 0

fiif [ ! "$" = "war" ]; then

echo "***error: $ is not a war file."

exit 0

fiecho "deploy $..."

rm -rf $/../work/catalina/localhost/

echo "restart tomcat..."

exec $/restart.sh

第一行 #!/bin/sh 雖然是注釋,但是也不可省略,表明一種格式。

第三行 war=$1 是將傳進來的值賦給war這個變數,$1就是啟動命令./bin/deploy.sh後邊的引數,也就是(要發布的war包),實際上就是war包的路徑檔案。

第四行 bin=$(cd `dirname $0`; pwd) ,「$0」代表bin/deploy.sh,所以「dirname $0」是bin,cd進到bin目錄之後執行pwd查出全路徑,一般是/usr/***/***/tomcat/bin,再把這個路徑賦給bin

第六到九行 if語句 ,條件語句中的-n檢測字串長度是否為0,所以就是在檢測是否有傳值進來,沒有就提示「要傳值啦」。

第十到十三 if語句 ,條件語句中的-f檢測檔案是否是普通檔案,所以就是在檢測傳的是不是乙個檔案,沒有就提示「包不存在」。

第十四到十七 if語句 ,條件語句中的##*.實在取字尾副檔名,所以就是在檢測是否是乙個「war」包,不是就提示「這個不是war包啦」。

第十九行 echo 「deploy $…」 ,輸出列印日誌。

第二十行 rm 刪除命令,&&前半段是刪除tomcat目錄下的那個root資料夾,後半段是解壓傳進來那個war包並安裝到這個root路徑下。簡單來說就是替換掉。

第二十一行 rm 刪除命令,刪除日誌資訊。

第二十二行 echo 「restart tomcat…」 ,輸出「正在重啟tomcat」讓你開心下。

第二十三行 exec $/restart.sh 執行restart.sh檔案,這個檔案就是啟動檔案。

啟動指令碼restart.sh指令碼

#!/bin/sh

bin=$(cd `dirname $0`; pwd)

pid=$(ps aux | grep tomcat | grep -v grep | grep -v restart | grep $ | awk '')

if [ -n "$" ]; then

echo "shutdown..."

sh $/shutdown.sh

sleep 3

pid=$(ps aux | grep tomcat | grep -v grep | grep -v restart | grep $ | awk '')

if [ -n "$" ]; then

kill -9 $

sleep 1

fifiecho "startup..."

sh $/startup.sh

if [ "$1" = "-v" ]; then

tail -f $/../logs/catalina.out

fi

第一行 #!/bin/sh ,格式很重要。

第三行 bin=$(cd`dirname $0`; pwd) ,跟上邊一樣,獲取tomcat下bin的全路徑賦給bin。

第四行一串的管道,其實就是在查出正在執行的tomcat程序。

第五到十五行的 if語句 ,

第十七行 echo 「startup…」 ,輸出「啟動中」讓你開心下。

第十八行 sh $/startup.sh ,執行tomcat的啟動指令碼啟動tomcat。

第十九到二十一行 if語句 ,如果在一開始輸入命令時有帶「-v」引數,就把日誌資訊列印出來。

至此,tomcat發布啟動完畢。

shell指令碼重啟tomcat

1.新建shell空指令碼檔案,如 home tr.sh,並設定許可權 chmod 750 home tr.sh 2.設定檔案形式 sed e s m g home tr.sh home tr.sh 3.編輯指令碼 vi home tr.sh tomcat home home apache tomc...

zookeeper集群shell指令碼全啟動

我們的zookeeper要全部都啟動,我們不可能一次啟動乙個bin zkserver.sh start。因為如果我們如果有100臺集群的zookeeper,這個時候每一台都單獨啟動很麻煩,這個時候我們就使用shell指令碼進行。這樣我們只需要在集群的乙個zookeeper上面執行乙個shell指令碼...

Shell指令碼批量啟停Docker

目錄 最近日常測試中經常需要手動啟動或停止docker,於是決定寫乙個shell指令碼來代替人工操作,另外該指令碼,也可以通過python指令碼實行遠端呼叫,詳細如下所示 目前該指令碼是將container id寫死在指令碼中,當然也可以通過傳參給指令碼來進行控制,大家可以改造一下。啟動指令碼詳細如...