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寫死在指令碼中,當然也可以通過傳參給指令碼來進行控制,大家可以改造一下。啟動指令碼詳細如...