| 
									
										
										
										
											2011-08-02 07:41:24 +08:00
										 |  |  | #!/bin/bash
 | 
					
						
							| 
									
										
										
										
											2011-10-08 03:51:28 +08:00
										 |  |  | # Licensed to the Apache Software Foundation (ASF) under one or more | 
					
						
							|  |  |  | # contributor license agreements.  See the NOTICE file distributed with | 
					
						
							|  |  |  | # this work for additional information regarding copyright ownership. | 
					
						
							|  |  |  | # The ASF licenses this file to You under the Apache License, Version 2.0 | 
					
						
							|  |  |  | # (the "License"); you may not use this file except in compliance with | 
					
						
							|  |  |  | # the License.  You may obtain a copy of the License at | 
					
						
							|  |  |  | #  | 
					
						
							|  |  |  | #    http://www.apache.org/licenses/LICENSE-2.0 | 
					
						
							|  |  |  | #  | 
					
						
							|  |  |  | # Unless required by applicable law or agreed to in writing, software | 
					
						
							|  |  |  | # distributed under the License is distributed on an "AS IS" BASIS, | 
					
						
							|  |  |  | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
					
						
							|  |  |  | # See the License for the specific language governing permissions and | 
					
						
							|  |  |  | # limitations under the License. | 
					
						
							| 
									
										
										
										
											2011-08-02 07:41:24 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | if [ $# -lt 1 ]; | 
					
						
							|  |  |  | then | 
					
						
							| 
									
										
										
										
											2013-11-19 13:02:00 +08:00
										 |  |  |   echo "USAGE: $0 [-daemon] [-name servicename] [-loggc] classname [opts]" | 
					
						
							| 
									
										
										
										
											2011-08-02 07:41:24 +08:00
										 |  |  |   exit 1 | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | base_dir=$(dirname $0)/.. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-07-11 23:06:43 +08:00
										 |  |  | # create logs directory | 
					
						
							| 
									
										
										
										
											2014-02-26 01:37:15 +08:00
										 |  |  | if [ "x$LOG_DIR" = "x" ]; then | 
					
						
							|  |  |  |     LOG_DIR="$base_dir/logs" | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if [ ! -d "$LOG_DIR" ]; then | 
					
						
							|  |  |  |     mkdir -p "$LOG_DIR" | 
					
						
							| 
									
										
										
										
											2013-07-11 23:06:43 +08:00
										 |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if [ -z "$SCALA_VERSION" ]; then | 
					
						
							|  |  |  | 	SCALA_VERSION=2.8.0 | 
					
						
							|  |  |  | fi | 
					
						
							| 
									
										
										
										
											2013-01-24 14:23:44 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-08 05:48:04 +08:00
										 |  |  | # run ./gradlew copyDependantLibs to get all dependant jars in a local dir | 
					
						
							|  |  |  | for file in $base_dir/core/build/dependant-libs-${SCALA_VERSION}/*.jar; | 
					
						
							|  |  |  | do | 
					
						
							|  |  |  |   CLASSPATH=$CLASSPATH:$file | 
					
						
							|  |  |  | done | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | for file in $base_dir/perf/build/libs//kafka-perf_${SCALA_VERSION}*.jar; | 
					
						
							|  |  |  | do | 
					
						
							|  |  |  |   CLASSPATH=$CLASSPATH:$file | 
					
						
							|  |  |  | done | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-10 07:16:51 +08:00
										 |  |  | for file in $base_dir/examples/build/libs//kafka-examples*.jar; | 
					
						
							| 
									
										
										
										
											2014-02-08 05:48:04 +08:00
										 |  |  | do | 
					
						
							|  |  |  |   CLASSPATH=$CLASSPATH:$file | 
					
						
							|  |  |  | done | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-10 07:16:51 +08:00
										 |  |  | for file in $base_dir/contrib/hadoop-consumer/build/libs//kafka-hadoop-consumer*.jar; | 
					
						
							| 
									
										
										
										
											2014-02-08 05:48:04 +08:00
										 |  |  | do | 
					
						
							|  |  |  |   CLASSPATH=$CLASSPATH:$file | 
					
						
							|  |  |  | done | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-10 07:16:51 +08:00
										 |  |  | for file in $base_dir/contrib/hadoop-producer/build/libs//kafka-hadoop-producer*.jar; | 
					
						
							| 
									
										
										
										
											2014-02-08 05:48:04 +08:00
										 |  |  | do | 
					
						
							|  |  |  |   CLASSPATH=$CLASSPATH:$file | 
					
						
							|  |  |  | done | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-20 13:32:46 +08:00
										 |  |  | for file in $base_dir/clients/build/libs/kafka-clients*.jar; | 
					
						
							| 
									
										
										
										
											2012-01-06 08:43:46 +08:00
										 |  |  | do | 
					
						
							|  |  |  |   CLASSPATH=$CLASSPATH:$file | 
					
						
							|  |  |  | done | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-12 02:01:11 +08:00
										 |  |  | # classpath addition for release | 
					
						
							|  |  |  | for file in $base_dir/libs/*.jar; | 
					
						
							|  |  |  | do | 
					
						
							|  |  |  |   CLASSPATH=$CLASSPATH:$file | 
					
						
							|  |  |  | done | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-08 05:48:04 +08:00
										 |  |  | for file in $base_dir/core/build/libs/kafka_${SCALA_VERSION}*.jar; | 
					
						
							| 
									
										
										
										
											2013-04-12 02:01:11 +08:00
										 |  |  | do | 
					
						
							|  |  |  |   CLASSPATH=$CLASSPATH:$file | 
					
						
							|  |  |  | done | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-07-11 23:06:43 +08:00
										 |  |  | # JMX settings | 
					
						
							| 
									
										
										
										
											2011-08-02 07:41:24 +08:00
										 |  |  | if [ -z "$KAFKA_JMX_OPTS" ]; then | 
					
						
							|  |  |  |   KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false  -Dcom.sun.management.jmxremote.ssl=false " | 
					
						
							|  |  |  | fi | 
					
						
							| 
									
										
										
										
											2013-01-24 14:23:44 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-07-11 23:06:43 +08:00
										 |  |  | # JMX port to use | 
					
						
							| 
									
										
										
										
											2011-08-02 07:41:24 +08:00
										 |  |  | if [  $JMX_PORT ]; then | 
					
						
							|  |  |  |   KAFKA_JMX_OPTS="$KAFKA_JMX_OPTS -Dcom.sun.management.jmxremote.port=$JMX_PORT " | 
					
						
							|  |  |  | fi | 
					
						
							| 
									
										
										
										
											2013-01-24 14:23:44 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-07-11 23:06:43 +08:00
										 |  |  | # Log4j settings | 
					
						
							|  |  |  | if [ -z "$KAFKA_LOG4J_OPTS" ]; then | 
					
						
							|  |  |  |   KAFKA_LOG4J_OPTS="-Dlog4j.configuration=file:$base_dir/config/tools-log4j.properties" | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-11-19 13:02:00 +08:00
										 |  |  | KAFKA_LOG4J_OPTS="-Dkafka.logs.dir=$LOG_DIR $KAFKA_LOG4J_OPTS" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-07-11 23:06:43 +08:00
										 |  |  | # Generic jvm settings you want to add | 
					
						
							|  |  |  | if [ -z "$KAFKA_OPTS" ]; then | 
					
						
							|  |  |  |   KAFKA_OPTS="" | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Which java to use | 
					
						
							| 
									
										
										
										
											2011-08-02 07:41:24 +08:00
										 |  |  | if [ -z "$JAVA_HOME" ]; then | 
					
						
							|  |  |  |   JAVA="java" | 
					
						
							|  |  |  | else | 
					
						
							|  |  |  |   JAVA="$JAVA_HOME/bin/java" | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-07-11 23:06:43 +08:00
										 |  |  | # Memory options | 
					
						
							|  |  |  | if [ -z "$KAFKA_HEAP_OPTS" ]; then | 
					
						
							|  |  |  |   KAFKA_HEAP_OPTS="-Xmx256M" | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # JVM performance options | 
					
						
							|  |  |  | if [ -z "$KAFKA_JVM_PERFORMANCE_OPTS" ]; then | 
					
						
							| 
									
										
										
										
											2013-10-15 00:39:10 +08:00
										 |  |  |   KAFKA_JVM_PERFORMANCE_OPTS="-server -XX:+UseCompressedOops -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+CMSScavengeBeforeRemark -XX:+DisableExplicitGC -Djava.awt.headless=true" | 
					
						
							| 
									
										
										
										
											2013-07-11 23:06:43 +08:00
										 |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-11-19 13:02:00 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | while [ $# -gt 0 ]; do | 
					
						
							|  |  |  |   COMMAND=$1 | 
					
						
							|  |  |  |   case $COMMAND in | 
					
						
							|  |  |  |     -name) | 
					
						
							|  |  |  |       DAEMON_NAME=$2 | 
					
						
							|  |  |  |       CONSOLE_OUTPUT_FILE=$LOG_DIR/$DAEMON_NAME.out | 
					
						
							|  |  |  |       shift 2 | 
					
						
							|  |  |  |       ;; | 
					
						
							|  |  |  |     -loggc) | 
					
						
							|  |  |  |       if [ -z "$KAFKA_GC_LOG_OPTS"] ; then | 
					
						
							|  |  |  |         GC_LOG_ENABLED="true" | 
					
						
							|  |  |  |       fi | 
					
						
							|  |  |  |       shift | 
					
						
							|  |  |  |       ;; | 
					
						
							|  |  |  |     -daemon) | 
					
						
							|  |  |  |       DAEMON_MODE="true" | 
					
						
							|  |  |  |       shift | 
					
						
							|  |  |  |       ;; | 
					
						
							|  |  |  |     *) | 
					
						
							|  |  |  |       break | 
					
						
							|  |  |  |       ;; | 
					
						
							|  |  |  |   esac | 
					
						
							|  |  |  | done | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-07-11 23:06:43 +08:00
										 |  |  | # GC options | 
					
						
							|  |  |  | GC_FILE_SUFFIX='-gc.log' | 
					
						
							|  |  |  | GC_LOG_FILE_NAME='' | 
					
						
							| 
									
										
										
										
											2013-11-19 13:02:00 +08:00
										 |  |  | if [ "x$GC_LOG_ENABLED" = "xtrue" ]; then | 
					
						
							|  |  |  |   GC_LOG_FILE_NAME=$DAEMON_NAME$GC_FILE_SUFFIX | 
					
						
							| 
									
										
										
										
											2013-07-11 23:06:43 +08:00
										 |  |  |   KAFKA_GC_LOG_OPTS="-Xloggc:$LOG_DIR/$GC_LOG_FILE_NAME -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps " | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-11-19 13:02:00 +08:00
										 |  |  | # Launch mode | 
					
						
							|  |  |  | if [ "x$DAEMON_MODE" = "xtrue" ]; then | 
					
						
							|  |  |  |   nohup $JAVA $KAFKA_HEAP_OPTS $KAFKA_JVM_PERFORMANCE_OPTS $KAFKA_GC_LOG_OPTS $KAFKA_JMX_OPTS $KAFKA_LOG4J_OPTS -cp $CLASSPATH $KAFKA_OPTS "$@" > "$CONSOLE_OUTPUT_FILE" 2>&1 < /dev/null & | 
					
						
							|  |  |  | else | 
					
						
							|  |  |  |   exec $JAVA $KAFKA_HEAP_OPTS $KAFKA_JVM_PERFORMANCE_OPTS $KAFKA_GC_LOG_OPTS $KAFKA_JMX_OPTS $KAFKA_LOG4J_OPTS -cp $CLASSPATH $KAFKA_OPTS "$@" | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-30 11:26:08 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 |