start.sh 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. #!/bin/bash
  2. cd `dirname $0`
  3. BIN_DIR=`pwd`
  4. cd ..
  5. DEPLOY_DIR=`pwd`
  6. CONF_DIR=$DEPLOY_DIR/conf
  7. SERVER_NAME=`sed '/dubbo.application.name/!d;s/.*=//' conf/dubbo.properties | tr -d '\r'`
  8. SERVER_PROTOCOL=`sed '/dubbo.protocol.name/!d;s/.*=//' conf/dubbo.properties | tr -d '\r'`
  9. SERVER_PORT=`sed '/dubbo.protocol.port/!d;s/.*=//' conf/dubbo.properties | tr -d '\r'`
  10. LOGS_FILE=`sed '/dubbo.log4j.file/!d;s/.*=//' conf/dubbo.properties | tr -d '\r'`
  11. if [ -z "$SERVER_NAME" ]; then
  12. SERVER_NAME=`hostname`
  13. fi
  14. PIDS=`ps -f | grep java | grep "$CONF_DIR" |awk '{print $2}'`
  15. if [ -n "$PIDS" ]; then
  16. echo "ERROR: The $SERVER_NAME already started!"
  17. echo "PID: $PIDS"
  18. exit 1
  19. fi
  20. if [ -n "$SERVER_PORT" ]; then
  21. SERVER_PORT_COUNT=`netstat -tln | grep $SERVER_PORT | wc -l`
  22. if [ $SERVER_PORT_COUNT -gt 0 ]; then
  23. echo "ERROR: The $SERVER_NAME port $SERVER_PORT already used!"
  24. exit 1
  25. fi
  26. fi
  27. LOGS_DIR=""
  28. if [ -n "$LOGS_FILE" ]; then
  29. LOGS_DIR=`dirname $LOGS_FILE`
  30. else
  31. LOGS_DIR=$DEPLOY_DIR/logs
  32. fi
  33. if [ ! -d $LOGS_DIR ]; then
  34. mkdir $LOGS_DIR
  35. fi
  36. STDOUT_FILE=$LOGS_DIR/stdout.log
  37. LIB_DIR=$DEPLOY_DIR/lib
  38. LIB_JARS=`ls $LIB_DIR|grep .jar|awk '{print "'$LIB_DIR'/"$0}'|tr "\n" ":"`
  39. LOCK_ZOOKEEPER_FILE="$LOGS_DIR/`echo $PWD|awk -F/ '{print $NF}'`.properties"
  40. JAVA_OPTS=" -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Ddubbo.registry.file=$LOCK_ZOOKEEPER_FILE"
  41. JAVA_DEBUG_OPTS=""
  42. if [ "$1" = "debug" ]; then
  43. JAVA_DEBUG_OPTS=" -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n "
  44. fi
  45. JAVA_JMX_OPTS=""
  46. if [ "$1" = "jmx" ]; then
  47. JAVA_JMX_OPTS=" -Djava.rmi.server.hostname=172.21.32.38 -Dcom.sun.management.jmxremote.port=1088 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false "
  48. fi
  49. JAVA_MEM_OPTS=""
  50. BITS=`java -version 2>&1 | grep -i 64-bit`
  51. if [ -n "$BITS" ]; then
  52. JAVA_MEM_OPTS=" -server -Xmx2g -Xms2g -Xmn256m -XX:PermSize=128m -Xss256k -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 "
  53. else
  54. JAVA_MEM_OPTS=" -server -Xms1g -Xmx1g -XX:PermSize=128m -XX:SurvivorRatio=2 -XX:+UseParallelGC "
  55. fi
  56. echo -e "Starting the $SERVER_NAME ...\c"
  57. nohup java $JAVA_OPTS $JAVA_MEM_OPTS $JAVA_DEBUG_OPTS $JAVA_JMX_OPTS -classpath $CONF_DIR:$LIB_JARS com.alibaba.dubbo.container.Main > $STDOUT_FILE 2>&1 &
  58. COUNT=0
  59. while [ $COUNT -lt 1 ]; do
  60. echo -e ".\c"
  61. sleep 1
  62. if [ -n "$SERVER_PORT" ]; then
  63. if [ "$SERVER_PROTOCOL" == "dubbo" ]; then
  64. COUNT=`echo status | nc -i 1 172.21.32.38 $SERVER_PORT | grep -c OK`
  65. else
  66. COUNT=`netstat -an | grep $SERVER_PORT | wc -l`
  67. fi
  68. else
  69. COUNT=`ps -f | grep java | grep "$DEPLOY_DIR" | awk '{print $2}' | wc -l`
  70. fi
  71. if [ $COUNT -gt 0 ]; then
  72. break
  73. fi
  74. done
  75. echo "OK!"
  76. PIDS=`ps -f | grep java | grep "$DEPLOY_DIR" | awk '{print $2}'`
  77. echo "PID: $PIDS"
  78. echo "STDOUT: $STDOUT_FILE"