startup.sh 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. #!/bin/bash
  2. current_path=`pwd`
  3. case "`uname`" in
  4. Linux)
  5. bin_abs_path=$(readlink -f $(dirname $0))
  6. ;;
  7. *)
  8. bin_abs_path=`cd $(dirname $0); pwd`
  9. ;;
  10. esac
  11. base=${bin_abs_path}/..
  12. canal_conf=$base/conf/canal.properties
  13. logback_configurationFile=$base/conf/logback.xml
  14. export LANG=en_US.UTF-8
  15. export BASE=$base
  16. if [ -f $base/bin/canal.pid ] ; then
  17. echo "found canal.pid , Please run stop.sh first ,then startup.sh" 2>&2
  18. exit 1
  19. fi
  20. if [ ! -d $base/logs/canal ] ; then
  21. mkdir -p $base/logs/canal
  22. fi
  23. ## set java path
  24. if [ -z "$JAVA" ] ; then
  25. JAVA=$(which java)
  26. fi
  27. ALIBABA_JAVA="/usr/alibaba/java/bin/java"
  28. TAOBAO_JAVA="/opt/taobao/java/bin/java"
  29. if [ -z "$JAVA" ]; then
  30. if [ -f $ALIBABA_JAVA ] ; then
  31. JAVA=$ALIBABA_JAVA
  32. elif [ -f $TAOBAO_JAVA ] ; then
  33. JAVA=$TAOBAO_JAVA
  34. else
  35. echo "Cannot find a Java JDK. Please set either set JAVA or put java (>=1.5) in your PATH." 2>&2
  36. exit 1
  37. fi
  38. fi
  39. case "$#"
  40. in
  41. 0 )
  42. ;;
  43. 1 )
  44. var=$*
  45. if [ -f $var ] ; then
  46. canal_conf=$var
  47. else
  48. echo "THE PARAMETER IS NOT CORRECT.PLEASE CHECK AGAIN."
  49. exit
  50. fi;;
  51. 2 )
  52. var=$1
  53. if [ -f $var ] ; then
  54. canal_conf=$var
  55. else
  56. if [ "$1" = "debug" ]; then
  57. DEBUG_PORT=$2
  58. DEBUG_SUSPEND="n"
  59. JAVA_DEBUG_OPT="-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=$DEBUG_PORT,server=y,suspend=$DEBUG_SUSPEND"
  60. fi
  61. fi;;
  62. * )
  63. echo "THE PARAMETERS MUST BE TWO OR LESS.PLEASE CHECK AGAIN."
  64. exit;;
  65. esac
  66. str=`file -L $JAVA | grep 64-bit`
  67. if [ -n "$str" ]; then
  68. JAVA_OPTS="-server -Xms2048m -Xmx3072m -Xmn1024m -XX:SurvivorRatio=2 -XX:PermSize=96m -XX:MaxPermSize=256m -Xss256k -XX:-UseAdaptiveSizePolicy -XX:MaxTenuringThreshold=15 -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError"
  69. else
  70. JAVA_OPTS="-server -Xms1024m -Xmx1024m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:MaxPermSize=128m "
  71. fi
  72. JAVA_OPTS=" $JAVA_OPTS -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Dfile.encoding=UTF-8"
  73. CANAL_OPTS="-DappName=otter-canal -Dlogback.configurationFile=$logback_configurationFile -Dcanal.conf=$canal_conf"
  74. if [ -e $canal_conf -a -e $logback_configurationFile ]
  75. then
  76. for i in $base/lib/*;
  77. do CLASSPATH=$i:"$CLASSPATH";
  78. done
  79. CLASSPATH="$base/conf:$CLASSPATH";
  80. echo "cd to $bin_abs_path for workaround relative path"
  81. cd $bin_abs_path
  82. echo LOG CONFIGURATION : $logback_configurationFile
  83. echo canal conf : $canal_conf
  84. echo CLASSPATH :$CLASSPATH
  85. # metrics support options
  86. # if [ -x $base/bin/metrics_env.sh ]; then
  87. # . $base/bin/metrics_env.sh
  88. # echo METRICS_OPTS $METRICS_OPTS
  89. # fi
  90. $JAVA $JAVA_OPTS $METRICS_OPTS $JAVA_DEBUG_OPT $CANAL_OPTS -classpath .:$CLASSPATH com.alibaba.otter.canal.deployer.CanalLauncher 1>>$base/logs/canal/canal.log 2>&1 &
  91. echo $! > $base/bin/canal.pid
  92. echo "cd to $current_path for continue"
  93. cd $current_path
  94. else
  95. echo "canal conf("$canal_conf") OR log configration file($logback_configurationFile) is not exist,please create then first!"
  96. fi