如下是我的重啓腳本
#/bin/sh
source /etc/profile
sh /opt/kms_jsoncach.sh
pid=`ps -ef | grep "APPmanager" | grep -v 'grep\|tail\|more\|less'| awk '{print $2}'`
5 kill -9 $pid
rm -f /opt/eAPPmanager/pid
else
rm -f /opt/ethank-ktv-manager/pid
fi
rm -rf /opt/APPmanager/webapps/*
cp /opt/bak/APPmanager.war /opt/APPmanager/webapps/
sh /opt/APPmanager/bin/startup.sh
最開始的時候沒有設置任何jvm參數,一切都是好用的。
設置了參數:
JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -Xms1024m -Xmx2048m
-XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/data/jvm/my/ -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:/opt/data/jvm/my/gc.log"
發佈之後發現server端的長鏈接不好用了。查來查去發現會同時啓動兩個tomcat進程。
後來看了一下,找到了問題 :
pid=`ps -ef | grep "APPmanager" | grep -v 'grep\|tail\|more\|less'| awk '{print $2}'`
這裏pid獲取不到了,因爲grep -v less
遇到了jvm參數
-Djava.awt.headless=true
pid就沒有獲取到,導致了tomcat沒有真正重啓,tomat的模式是autoDeploy=”true”
,所以表面上看到程序是更新了,但是進程並沒有重啓。