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下設置環境變量”