Return-Path: Delivered-To: apmail-geronimo-scm-archive@www.apache.org Received: (qmail 20954 invoked from network); 16 Aug 2010 08:03:04 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 16 Aug 2010 08:03:04 -0000 Received: (qmail 52548 invoked by uid 500); 16 Aug 2010 08:03:03 -0000 Delivered-To: apmail-geronimo-scm-archive@geronimo.apache.org Received: (qmail 52422 invoked by uid 500); 16 Aug 2010 08:03:00 -0000 Mailing-List: contact scm-help@geronimo.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: Reply-To: dev@geronimo.apache.org List-Id: Delivered-To: mailing list scm@geronimo.apache.org Received: (qmail 52415 invoked by uid 99); 16 Aug 2010 08:02:59 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 16 Aug 2010 08:02:59 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 16 Aug 2010 08:02:58 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id C9AE523889BF; Mon, 16 Aug 2010 08:01:40 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r985820 - /geronimo/server/trunk/framework/configs/karaf-framework/src/main/distribution/unix-shell/bin/gserviceReg.sh Date: Mon, 16 Aug 2010 08:01:40 -0000 To: scm@geronimo.apache.org From: xuhaihong@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20100816080140.C9AE523889BF@eris.apache.org> Author: xuhaihong Date: Mon Aug 16 08:01:40 2010 New Revision: 985820 URL: http://svn.apache.org/viewvc?rev=985820&view=rev Log: GERONIMO-5503 Run geronimo as Linux service update (Patch from viola.lu) Added: geronimo/server/trunk/framework/configs/karaf-framework/src/main/distribution/unix-shell/bin/gserviceReg.sh (with props) Added: geronimo/server/trunk/framework/configs/karaf-framework/src/main/distribution/unix-shell/bin/gserviceReg.sh URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/configs/karaf-framework/src/main/distribution/unix-shell/bin/gserviceReg.sh?rev=985820&view=auto ============================================================================== --- geronimo/server/trunk/framework/configs/karaf-framework/src/main/distribution/unix-shell/bin/gserviceReg.sh (added) +++ geronimo/server/trunk/framework/configs/karaf-framework/src/main/distribution/unix-shell/bin/gserviceReg.sh Mon Aug 16 08:01:40 2010 @@ -0,0 +1,329 @@ +#!/bin/sh +# +# 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. +# -------------------------------------------------------------------- +# +# This script file will invoke startup , shutdown to +# start/stop/restart/ server and check server status, also make server autostart +# at os boot time. +# Usage: +# $server_install_path/bin/gserviceReg.sh add/del/list [service_name] +# [service_name] start/stop/restart/status +#-------------------------------------------------------------------- + +# Make sure prerequisite environment variables are set +if [ -z "$JAVA_HOME" -a -z "$JRE_HOME" ]; then + echo "ERROR: Neither the JAVA_HOME nor the JRE_HOME environment variable is defined." + echo "At least one of these is required for this program to execute." + echo "" + exit 1 +fi +if [ -z "$JRE_HOME" ]; then + if [ -d "$JAVA_HOME/jre" ]; then + JRE_HOME="$JAVA_HOME/jre" + else + JRE_HOME="$JAVA_HOME" + fi +fi +cygwin=false +os400=false +osAix=false +osSolaris=false +osRedhat=false +osSuse=false +osUbuntu=false +case "`uname`" in +CYGWIN*) cygwin=true;; +OS400*) os400=true;; +AIX*) osAix=true;; +SunOS*) osSolaris=true;; +Ubuntu*) osUbuntu=true;; +Linux*) +case "`more /proc/version`" in +*Red*Hat*) osRedhat=true;; +*SUSE*) osSuse=true;; +*Ubuntu*) osUbuntu=true;; +esac +;; +esac +# resolve links - $0 may be a softlink +PRG="$0" + +while [ -h "$PRG" ]; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`/"$link" + fi +done + +# Get standard environment variables +PRGDIR=`dirname "$PRG"` + +# Only set GERONIMO_HOME if not already set +[ -z "$GERONIMO_HOME" ] && GERONIMO_HOME=`cd "$PRGDIR/.." ; pwd` +if [ "$#" -eq "2" ]; then +GSERVICE_NAME=${GERONIMO_HOME}/bin/$2 +fi + +chmod +x "$GERONIMO_HOME"/bin/* + +# Check that target executable exists +if $os400; then + # -x will Only work on the os400 if the files are: + # 1. owned by the user + # 2. owned by the PRIMARY group of the user + # this will not work if the user belongs in secondary groups + eval +else + if [ ! -x "${GERONIMO_HOME}/bin/startup" ]; then + echo "Cannot find ${GERONIMO_HOME}/bin/startup" + echo "This file is needed to run this program" + exit 1 + fi + if [ ! -x "${GERONIMO_HOME}/bin/shutdown" ]; then + echo "Cannot find ${GERONIMO_HOME}/bin/shutdown" + echo "This file is needed to run this program" + exit 1 + fi +fi + +case "$1" in +add) +if [ "$#" -lt "2" ]; then + echo "Please input service name to be added" + exit 1 +fi +echo '#! /bin/bash'>"$GSERVICE_NAME" +echo '# chkconfig: 235 99 01'>>"$GSERVICE_NAME" +echo "# description: $2 service dameon">>"$GSERVICE_NAME" +echo "# /etc/init.d/$2">>"$GSERVICE_NAME" +echo '### BEGIN INIT INFO'>>"$GSERVICE_NAME" +echo "# Provides: $2">>"$GSERVICE_NAME" +echo '# Required-Start: $ALL'>>"$GSERVICE_NAME" +echo '# Required-Stop: '>>"$GSERVICE_NAME" +echo '# Default-Start: 2 3 5'>>"$GSERVICE_NAME" +echo '# Default-Stop: 0 1 2 6'>>"$GSERVICE_NAME" +echo "# Short-Description: $2 daemon">>"$GSERVICE_NAME" +echo '### END INIT INFO'>>"$GSERVICE_NAME" +if $osUbuntu; then + echo ". /lib/lsb/init-functions" >>"$GSERVICE_NAME" + echo "user=$USER" >>"$GSERVICE_NAME" +else + echo "user=$USER" >>"$GSERVICE_NAME" +fi +echo "JAVA_HOME=$JAVA_HOME">>"$GSERVICE_NAME" +echo "export JAVA_HOME">>"$GSERVICE_NAME" +echo "GERONIMO_HOME=$GERONIMO_HOME">>"$GSERVICE_NAME" +echo 'Port_Off_Set=`grep "^PortOffset=" "$GERONIMO_HOME"/var/config/config-substitutions.properties |awk -F= '\'{print \$2}\'\`>>"$GSERVICE_NAME" +echo 'RMI_PORT=`expr $Port_Off_Set \+ 1099`'>>"$GSERVICE_NAME" +echo 'ADMIN_USER=system'>>"$GSERVICE_NAME" +echo 'ADMIN_PASS=manager'>>"$GSERVICE_NAME" + + +echo 'start() {'>>"$GSERVICE_NAME" +echo 'PID_Count=`ps -ef|grep -i "$GERONIMO_HOME"|awk -FS '\'{print \$2}\'\|wc -l\`>>"$GSERVICE_NAME" +echo 'if [ $PID_Count -eq 1 ] '>>"$GSERVICE_NAME" +echo 'then'>>"$GSERVICE_NAME" +echo '{'>>"$GSERVICE_NAME" +echo 'echo "Server is started already"'>>"$GSERVICE_NAME" +echo '}'>>"$GSERVICE_NAME" +echo 'else '>>"$GSERVICE_NAME" +echo '{'>>"$GSERVICE_NAME" +if $osUbuntu; then +echo 'log_daemon_msg "Starting Server"'>>"$GSERVICE_NAME" +echo 'JAVA_HOME="$JAVA_HOME" start-stop-daemon --make-pidfile --pidfile /var/run/geronimo-server.pid --background --user $user --exec "$GERONIMO_HOME"/bin/geronimo.sh --start -- run'>>"$GSERVICE_NAME" +else +echo 'echo "Start Server on port $RMI_PORT"'>>"$GSERVICE_NAME" +echo 'su $user -s /bin/bash -c "$GERONIMO_HOME/bin/startup"'>>"$GSERVICE_NAME" +fi +echo '}'>>"$GSERVICE_NAME" +echo 'fi'>>"$GSERVICE_NAME" +echo '}'>>"$GSERVICE_NAME" + +echo 'stop() {'>>"$GSERVICE_NAME" +if $osUbuntu; then + echo 'log_daemon_msg "Stopping Server"'>>"$GSERVICE_NAME" + echo 'killproc -p /var/run/geronimo-server.pid || true'>>"$GSERVICE_NAME" +else +echo 'echo "Shutting down server on port ${RMI_PORT}"'>>"$GSERVICE_NAME" +echo '"$GERONIMO_HOME"/bin/shutdown --user "$ADMIN_USER" --password "$ADMIN_PASS" --port "$RMI_PORT"'>>"$GSERVICE_NAME" +fi +echo '}'>>"$GSERVICE_NAME" + +echo 'restart() {'>>"$GSERVICE_NAME" +echo 'echo "Restart server on port ${RMI_PORT}"'>>"$GSERVICE_NAME" +echo 'PID_Count=`ps -ef|grep -i "$GERONIMO_HOME"|awk -FS '\'{print \$2}\'\|wc -l\`>>"$GSERVICE_NAME" +echo 'if [ $PID_Count -eq 1 ] '>>"$GSERVICE_NAME" +echo 'then'>>"$GSERVICE_NAME" +echo '{'>>"$GSERVICE_NAME" +echo ' echo -n -e "\nRestart server.\n"'>>"$GSERVICE_NAME" +echo ' stop'>>"$GSERVICE_NAME" +echo ' sleep 30'>>"$GSERVICE_NAME" +echo ' start'>>"$GSERVICE_NAME" +echo '}'>>"$GSERVICE_NAME" +echo 'else '>>"$GSERVICE_NAME" +echo '{'>>"$GSERVICE_NAME" +echo ' echo -n -e "\nServer is down.Can not restart.\n"'>>"$GSERVICE_NAME" +echo '}'>>"$GSERVICE_NAME" +echo 'fi'>>"$GSERVICE_NAME" + +echo '}'>>"$GSERVICE_NAME" + +echo 'status() {'>>"$GSERVICE_NAME" +echo 'echo -n "Check server status on port ${RMI_PORT}"'>>"$GSERVICE_NAME" +echo 'PID_Count=`ps -ef|grep -i "$GERONIMO_HOME"|awk -FS '\'{print \$2}\'\|wc -l\`>>"$GSERVICE_NAME" +echo 'if [ $PID_Count -eq 1 ] '>>"$GSERVICE_NAME" +echo 'then'>>"$GSERVICE_NAME" +echo 'echo -n -e "\nServer is started.\n"'>>"$GSERVICE_NAME" +echo 'else'>>"$GSERVICE_NAME" +echo ' echo -n -e "\nServer is down.\n"'>>"$GSERVICE_NAME" +echo 'fi'>>"$GSERVICE_NAME" +echo '}'>>"$GSERVICE_NAME" + +echo 'case "$1" in'>>"$GSERVICE_NAME" +echo 'start)'>>"$GSERVICE_NAME" +echo 'start'>>"$GSERVICE_NAME" +echo ';;'>>"$GSERVICE_NAME" +echo 'stop)'>>"$GSERVICE_NAME" +echo 'stop'>>"$GSERVICE_NAME" +echo ';;'>>"$GSERVICE_NAME" +echo 'restart)'>>"$GSERVICE_NAME" +echo 'restart'>>"$GSERVICE_NAME" +echo ';;'>>"$GSERVICE_NAME" +echo 'status)'>>"$GSERVICE_NAME" +echo 'status'>>"$GSERVICE_NAME" +echo ';;'>>"$GSERVICE_NAME" +echo '*)'>>"$GSERVICE_NAME" +echo "echo \"Usage: $2 {start|stop|restart|status}\"">>"$GSERVICE_NAME" +echo 'exit 1'>>"$GSERVICE_NAME" +echo 'esac'>>"$GSERVICE_NAME" + +chmod +x "$GSERVICE_NAME" +if [ ! -x /usr/sbin/$2 ]; then + + if $osUbuntu; then + sudo ln -sf "$GSERVICE_NAME" /usr/sbin/"$2" + sudo chmod +x /usr/sbin/"$2" + else + if [ "$USER" = "root" ]; then + ln -sf "$GSERVICE_NAME" /usr/sbin/"$2" + chmod +x /usr/sbin/"$2" + else + sudo ln -sf "$GSERVICE_NAME" /usr/sbin/"$2" + sudo chmod +x /usr/sbin/"$2" + fi + fi + if $osSuse; then + if [ "$USER" = "root" ]; then + ln -sf /usr/sbin/"$2" /etc/init.d/"$2" + insserv "$2" + chkconfig "$2" on + else + sudo ln -sf /usr/sbin/"$2" /etc/init.d/"$2" + sudo /sbin/insserv "$2" + sudo /sbin/chkconfig "$2" on + fi + fi + if $osRedhat; then + if [ "$USER" = "root" ]; then + ln -sf /usr/sbin/"$2" /etc/init.d/"$2" + chkconfig "$2" on + else + sudo ln -sf /usr/sbin/"$2" /etc/init.d/"$2" + sudo /sbin/chkconfig "$2" on + fi + fi + if $osSolaris; then + if [ "$USER" = "root" ]; then + ln -sf /usr/sbin/"$2" /etc/rc3.d/S99"$2" + else + sudo ln -sf /usr/sbin/"$2" /etc/rc3.d/S99"$2" + fi + fi + if $osAix; then + echo "$2:2:once:/usr/sbin/$2 start">>/etc/inittab + fi + if $osUbuntu; then + sudo ln -sf /usr/sbin/"$2" /etc/init.d/"$2" + sudo update-rc.d $2 defaults + fi +else +echo "$2 already exists" +exit 1 +fi +;; +del) +if [ "$#" -lt "2" ]; then + echo "Please input service name to be deleted" + exit 1 +else + if [ -x /usr/sbin/"$2" ]; then + echo "Delete service $2" + if $osSuse -o $osRedhat; then + if [ "$USER" = "root" ]; then + chkconfig --del $2 + rm -f /etc/init.d/"$2" + else + sudo /sbin/chkconfig --del $2 + sudo rm -f /etc/init.d/"$2" + fi + fi + if $osSolaris; then + if [ "$USER" = "root" ]; then + rm -fr /etc/rc3.d/S99"$2" + else + sudo rm -fr /etc/rc3.d/S99"$2" + fi + fi + if $osUbuntu; then + sudo update-rc.d -f $2 remove + sudo rm -f /etc/init.d/"$2" + sudo rm -f /usr/sbin/$2 + fi + if [ "$USER" = "root" ]; then + rm -f /usr/sbin/$2 + else + sudo rm -f /usr/sbin/$2 + fi + rm -f "$GSERVICE_NAME" + else + echo "$2 doesn't exist" + exit 1 + fi +fi +;; +list) +if [ "$#" -lt "2" ]; then + echo "Please input service name to be listed" + exit 1 +else + if [ -x /usr/sbin/"$2" ]; then + serverfolder=`head -1 /usr/sbin/"$2"|awk -F= '{print $2}'` + echo "$2 for server $serverfolder" + else + echo "$2 doesn't exist" + exit 1 + fi +fi +;; +*) +echo "Usage: ./gserviceReg.sh add|del|list [required:service name]" +exit 1 +;; +esac Propchange: geronimo/server/trunk/framework/configs/karaf-framework/src/main/distribution/unix-shell/bin/gserviceReg.sh ------------------------------------------------------------------------------ svn:eol-style = native Propchange: geronimo/server/trunk/framework/configs/karaf-framework/src/main/distribution/unix-shell/bin/gserviceReg.sh ------------------------------------------------------------------------------ svn:executable = * Propchange: geronimo/server/trunk/framework/configs/karaf-framework/src/main/distribution/unix-shell/bin/gserviceReg.sh ------------------------------------------------------------------------------ svn:keywords = Date Revision