脚本来自于阿里canal
#!/bin/bashcurrent_path=`pwd`case "`uname`" inLinux)bin_abs_path=$(readlink -f $(dirname $0));;*)bin_abs_path=`cd $(dirname $0); pwd`;;esacbase=${bin_abs_path}/..canal_conf=$base/conf/canal.propertiescanal_local_conf=$base/conf/canal_local.propertieslogback_configurationFile=$base/conf/logback.xmlexport LANG=en_US.UTF-8export BASE=$baseif [ -f $base/bin/canal.pid ] ; thenecho "found canal.pid , Please run stop.sh first ,then startup.sh" 2>&2exit 1fiif [ ! -d $base/logs/canal ] ; thenmkdir -p $base/logs/canalfi## set java pathif [ -z "$JAVA" ] ; thenJAVA=$(which java)fiALIBABA_JAVA="/usr/alibaba/java/bin/java"TAOBAO_JAVA="/opt/taobao/java/bin/java"if [ -z "$JAVA" ]; thenif [ -f $ALIBABA_JAVA ] ; thenJAVA=$ALIBABA_JAVAelif [ -f $TAOBAO_JAVA ] ; thenJAVA=$TAOBAO_JAVAelseecho "Cannot find a Java JDK. Please set either set JAVA or put java (>=1.5) in your PATH." 2>&2exit 1fificase "$#"in0 );;1 )var=$*if [ "$var" = "local" ]; thencanal_conf=$canal_local_confelseif [ -f $var ] ; thencanal_conf=$varelseecho "THE PARAMETER IS NOT CORRECT.PLEASE CHECK AGAIN."exitfifi;;2 )var=$1if [ "$var" = "local" ]; thencanal_conf=$canal_local_confelseif [ -f $var ] ; thencanal_conf=$varelseif [ "$1" = "debug" ]; thenDEBUG_PORT=$2DEBUG_SUSPEND="n"JAVA_DEBUG_OPT="-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=$DEBUG_PORT,server=y,suspend=$DEBUG_SUSPEND"fififi;;* )echo "THE PARAMETERS MUST BE TWO OR LESS.PLEASE CHECK AGAIN."exit;;esacstr=`file -L $JAVA | grep 64-bit`if [ -n "$str" ]; thenJAVA_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"elseJAVA_OPTS="-server -Xms1024m -Xmx1024m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:MaxPermSize=128m "fiJAVA_OPTS=" $JAVA_OPTS -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Dfile.encoding=UTF-8"CANAL_OPTS="-DappName=otter-canal -Dlogback.configurationFile=$logback_configurationFile -Dcanal.conf=$canal_conf"if [ -e $canal_conf -a -e $logback_configurationFile ]thenfor i in $base/lib/*;do CLASSPATH=$i:"$CLASSPATH";doneCLASSPATH="$base/conf:$CLASSPATH";echo "cd to $bin_abs_path for workaround relative path"cd $bin_abs_pathecho LOG CONFIGURATION : $logback_configurationFileecho canal conf : $canal_confecho CLASSPATH :$CLASSPATH$JAVA $JAVA_OPTS $JAVA_DEBUG_OPT $CANAL_OPTS -classpath .:$CLASSPATH com.alibaba.otter.canal.deployer.CanalLauncher 1>>$base/logs/canal/canal_stdout.log 2>&1 &echo $! > $base/bin/canal.pidecho "cd to $current_path for continue"cd $current_pathelseecho "canal conf("$canal_conf") OR log configration file($logback_configurationFile) is not exist,please create then first!"fi
