#!/bin/sh
#
#  SMagent
#
#  %version:            BDC~15 %
#  %date_created:       Fri Jun 25 12:26:54 2010 %
#
#  chkconfig: 2345 99 00
#  description: Starts and stops SMagent
#
### BEGIN INIT INFO
# Provides: SMagent
# Required-Start: $ALL
# Should-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 6
# Short-Description: SMagent
# Description: Starts and stops SMagent
### END INIT INFO

BASEDIR=/opt/IBM_DS
AGENT_PATH=$BASEDIR/agent
JAVA_EXEC=$BASEDIR/jre/bin/java
script=SMagent
action=$1
rval=0

#
# Set IO size to 32k if Redhat 5 system.
#
if [ -f /etc/redhat-release ]; then
	if [ `cat /etc/redhat-release | sed s/.*release\ // | sed s/\ .*//` = 5 ]; then
		IOSIZE="-io=32k"
	fi
else
	IOSIZE=
fi

#
# Make stop capability a shell function.
#
stop_agent(){
	#
	# Terminate the SMagent that may be still running
	#
	ps -A -o "pid command" --cols 256 | grep AgentLauncher | grep -v grep |
	while read line; do
		set $line x
		process=$1
		if [ $process -ne $$ ]; then
			kill -9 $process
			echo "Stopping Agent process $process."
			logger -t SMagent -p daemon.err SMagent stopped. PID=$process
		fi
	done	

}

case "$action" in
'start')
	#
	# Check to make sure there isn't another agent running already.
	# Kill and restart the agent.
	#
	stop_agent

	# Setup environment and start agent.
	cd $AGENT_PATH
	LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$AGENT_PATH
	export LD_LIBRARY_PATH
	if [ `uname -m` = "ppc64" ]; then
		$JAVA_EXEC -Xint -classpath $AGENT_PATH/SMagent.jar devmgr.launcher.unix.AgentLauncher -r -c $IOSIZE &
        logger -t SMagent -p daemon.err SMagent started. PID=$!
	else
		$JAVA_EXEC -classpath $AGENT_PATH/SMagent.jar devmgr.launcher.unix.AgentLauncher -r -c $IOSIZE &
        logger -t SMagent -p daemon.err SMagent started. PID=$!
	fi
	echo "$!" > /var/run/$script.pid		
	echo "SMagent started."
;;


'stop')
	# Stop the agent.
	stop_agent
;;

'restart')
	stop_agent

	# Setup environment and start agent.
	cd $AGENT_PATH
	LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$AGENT_PATH
	export LD_LIBRARY_PATH
	if [ `uname -p` = "ia64" ]; then
		prctl --fpemu=silent $JAVA_EXEC -classpath $AGENT_PATH/SMagent.jar devmgr.launcher.unix.AgentLauncher -r -c $IOSIZE > /var/opt/SM/agent_stdout.log 2> /var/opt/SM/agent_stderr.log &
	else
		$JAVA_EXEC -classpath $AGENT_PATH/SMagent.jar devmgr.launcher.unix.AgentLauncher -r -c $IOSIZE > /var/opt/SM/agent_stdout.log 2> /var/opt/SM/agent_stderr.log &
	fi
        logger -t $script -p daemon.err $script started. PID=$!
	echo "$!" > /var/run/$script.pid	
	echo "$script started."
;;	

'status')
    if [ -f /var/run/$script.pid ]; then
        ps `cat /var/run/$script.pid` >/dev/null 2>&1
        if [ $? -eq 0 ]; then
            echo "$script (pid `cat /var/run/$script.pid`) is running..."
            rval=0
   		else
            echo "$script is stopped"
        fi
    fi

    if [ ! -f /var/run/$script.pid ]; then
        echo "$script is stopped"
    fi
;;

*)
	# Usage message.
	echo "Usage: $0 {start|stop|restart|status}"
	rval=1
;;

esac

exit $rval


