linux--tomcat自動重啓--shell編程

sh格式文件,內容如下:

 

#!/bin/sh
DATE=$(date +%Y%m%d%H%M%S)
export JAVA_HOME=/usr/java/jdk1.6.0_23

LOG_FILE2="/usr/local/saas/backup/logs/worker2_"$DATE".out"

# stop the watchcat to prevent issues unexpectedly
#pkill watchcat.sh


#echo "==========shut down tomcat 2==========="
/usr/local/tomcat2/bin/shutdown.sh

sleep 10
#check if there're some tomcat2 ghosts not killed
tomcat2_pid=$(ps aux | grep -v grep | grep tomcat2 | awk '{print $2}')

if [ -n "$tomcat2_pid" ]
then
 kill -9 "$tomcat2_pid"
 echo "=====Finding and killing tomcat ghost(s) $tomcat2_pid completed===="
fi

sleep 50
#echo "==========backup worker 2 logs==========="
mv /usr/local/tomcat2/logs/catalina.out $LOG_FILE2

#echo "==========start up tomcat 2==========="
sleep 15
/usr/local/tomcat2/bin/startup.sh

sleep 10
#echo "==========shut down tomcat =========="
/usr/local/tomcat/bin/shutdown.sh

sleep 10
tomcat_pid=$(ps aux | grep -v grep | grep -w tomcat | awk '{print $2}')

if [ -n "$tomcat_pid" ]
then
 kill -9 "$tomcat_pid"
 echo "=====Finding and killing tomcat ghost(s) $tomcat_pid completed===="
fi

sleep 10

#echo "==========backup worker 1 logs==========="
LOG_FILE1="/usr/local/saas/backup/logs/worker1_"$DATE".out"
mv /usr/local/tomcat/logs/catalina.out $LOG_FILE1

sleep 50
#echo "===============start up tomcat =================="
/usr/local/tomcat/bin/startup.sh


# start watchcat daemon
#/home/yzm/watchcat.sh >> /home/yzm/cat_watching.log

 

 

 

難點解讀:

ps aux | grep -v grep | grep tomcat2 | awk '{print $2}'

 

ps aux:顯示所有程序(等同於ps -ef,兩者只是顯示結果的格式不一樣)

 

|: 是管道符號,把|前面的命令執行結果作爲後面命令的輸入。

 

grep -v grep:過濾掉包含有grep字符的行

 

grep tomcat2:過濾掉不包含tomcat2字符的行

 

awk '{print $2}':awk是一個強大的文本分析工具,awk工作流程是這樣的,讀入有'\n'換行符分割的一條記錄,然後將記錄按指定的域分隔符劃分域,填充域,$0則表示所有域,$1表示第一個域,$2表示第二個域(就是id),$n表示第n個域。默認域分隔符是"空白鍵" 或 "[tab]鍵",所以$2就是表示id。(如果要詳細瞭解,見我的下一篇“awk文本分析工具解讀”)

 

if [ -n "$tomcat2_pid" ]
then
 kill -9 "$tomcat2_pid"
 echo "=====Finding and killing tomcat ghost(s) $tomcat2_pid completed===="
fi

 

參考下面的例子

if [ -n "$1" ]
then
lines=$1
else
lines=$LINES
fi

判斷目前的程序的位置參數$1是否非空 非空爲真 空爲假 非空把$1帶入到lines裏。如果爲空就把上邊定義過的$lines帶入到lines裏。

 

echo "=====Finding and killing tomcat ghost(s) $tomcat2_pid completed===="

 

echo命令的功能是在顯示器上顯示一段文字,一般起到一個提示的作用。

 

export JAVA_HOME=/usr/java/jdk1.6.0_23

 

在linux下設置環境變量,想具體瞭解環境變量配置,可以看我的另一篇“linux下設置環境變量

發佈了21 篇原創文章 · 獲贊 4 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章