1. 程式人生 > >jenkins,Tomcat重啟指令碼,設定jvm引數之後遇到了一個坑。

jenkins,Tomcat重啟指令碼,設定jvm引數之後遇到了一個坑。

如下是我的重啟指令碼

 #/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”
,所以表面上看到程式是更新了,但是程序並沒有重啟。