2.0重构版本
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

106 lines
3.2 KiB

  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. client_mode="Simple"
  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. ## set java path
  21. if [ -z "$JAVA" ] ; then
  22. JAVA=$(which java)
  23. fi
  24. ALIBABA_JAVA="/usr/alibaba/java/bin/java"
  25. TAOBAO_JAVA="/opt/taobao/java/bin/java"
  26. if [ -z "$JAVA" ]; then
  27. if [ -f $ALIBABA_JAVA ] ; then
  28. JAVA=$ALIBABA_JAVA
  29. elif [ -f $TAOBAO_JAVA ] ; then
  30. JAVA=$TAOBAO_JAVA
  31. else
  32. echo "Cannot find a Java JDK. Please set either set JAVA or put java (>=1.5) in your PATH." 2>&2
  33. exit 1
  34. fi
  35. fi
  36. case "$#"
  37. in
  38. 0 )
  39. ;;
  40. 1 )
  41. client_mode=$*
  42. ;;
  43. 2 )
  44. if [ "$1" = "debug" ]; then
  45. DEBUG_PORT=$2
  46. DEBUG_SUSPEND="y"
  47. JAVA_DEBUG_OPT="-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=$DEBUG_PORT,server=y,suspend=$DEBUG_SUSPEND"
  48. else
  49. client_mode=$1
  50. fi;;
  51. * )
  52. echo "THE PARAMETERS MUST BE TWO OR LESS.PLEASE CHECK AGAIN."
  53. exit;;
  54. esac
  55. JavaVersion=`$JAVA -version 2>&1 |awk 'NR==1{ gsub(/"/,""); print $3 }' | awk -F '.' '{print $1}'`
  56. str=`file -L $JAVA | grep 64-bit`
  57. JAVA_OPTS="$JAVA_OPTS -Xss256k -XX:+AggressiveOpts -XX:-UseBiasedLocking -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$base/logs"
  58. if [ $JavaVersion -ge 11 ] ; then
  59. #JAVA_OPTS="$JAVA_OPTS -Xlog:gc*:$base_log/gc.log:time "
  60. JAVA_OPTS="$JAVA_OPTS"
  61. else
  62. #JAVA_OPTS="$JAVA_OPTS -Xloggc:$base/logs/canal/gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCApplicationStoppedTime"
  63. JAVA_OPTS="$JAVA_OPTS -XX:+UseFastAccessorMethods -XX:+PrintAdaptiveSizePolicy -XX:+PrintTenuringDistribution"
  64. fi
  65. if [ -n "$str" ]; then
  66. # JAVA_OPTS="-server -Xms2048m -Xmx3072m -Xmn1024m -XX:SurvivorRatio=2 -XX:PermSize=96m -XX:MaxPermSize=256m -XX:MaxTenuringThreshold=15 -XX:+DisableExplicitGC $JAVA_OPTS"
  67. # For G1
  68. JAVA_OPTS="-server -Xms2g -Xmx3g -XX:+UseG1GC -XX:MaxGCPauseMillis=250 -XX:+UseGCOverheadLimit -XX:+ExplicitGCInvokesConcurrent $JAVA_OPTS"
  69. else
  70. JAVA_OPTS="-server -Xms1024m -Xmx1024m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:MaxPermSize=128m $JAVA_OPTS"
  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-example -Dlogback.configurationFile=$logback_configurationFile"
  74. if [ -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 client mode : $client_mode
  84. echo CLASSPATH :$CLASSPATH
  85. $JAVA $JAVA_OPTS $JAVA_DEBUG_OPT $CANAL_OPTS -classpath .:$CLASSPATH cc.smtweb.system.canal.example.ClientLauncher 1>>$base/bin/nohup.out 2>&1 &
  86. echo $! > $base/bin/canal.pid
  87. echo "cd to $current_path for continue"
  88. cd $current_path
  89. else
  90. echo "client mode("$client_mode") OR log configration file($logback_configurationFile) is not exist,please create then first!"
  91. fi