TSM start/stop server for linux
#!/bin/bash
#set -x
#
#@(#) TSM server start/stop
# dsmserv Start/Stop IBM Tivoli Storage Manager
#
# chkconfig: - 90 10
# description: Starts/Stops an IBM Tivoli Storage Manager Server instance
# processname: dsmserv
#
# version 1.0 10-12-2010
#
instance=tsminst1
inst_grp=tsmsrvrs
home_dir=`/opt/tivoli/tsm/server/bin/dsmfngr $instance 2>/dev/null`
pid_file=$home_dir/dsmserv.v6lock
# Set the language
export LANG=en_US
# Max out size of data area
ulimit -d unlimited
ulimit -f unlimited
# Allow the server to pack shared memory segments
export EXTSHM=ON
#------------------------------------------------
# usage ()
#------------------------------------------------
usage()
{
rep=$*
case "$rep" in
* )
echo "Usage: "$0 "(start|stop|status)"
echo "\tstart (or no parameter) : to start TSM server with instance: $instance"
echo "\tstop : to stop TSM server with instance: $instance"
echo "\tstatus : TSM server status"
exit 1
;;
esac
}
#------------------------------------------------
# tsm_start ()
#------------------------------------------------
tsm_start()
{
logfile=$home_dir/tsm_$rep.log
if [ `ps -fu $instance | grep dsmserv | grep -v grep > /dev/null 2>&1; echo $?` -eq 0 ]
then
echo "TSM server is Started"
exit 1
fi
# Start the server in quiet mode.
echo "$(date '+%D %T') Starting Tivoli Storage Manager Server"
echo "$(date '+%D %T') Starting Tivoli Storage Manager Server" > $logfile
chown $instance.$inst_grp $logfile
if [ `ps -fu $instance | grep dsmserv | grep -v grep > /dev/null 2>&1; echo $?` -ne 0 ]
then
if [ `whoami` != "$instance" ]
then
/opt/tivoli/tsm/server/bin/rc.dsmserv -u $instance -i $home_dir -q >> $logfile 2>&1 &
else
exec /opt/tivoli/tsm/server/bin/dsmserv -q >> $logfile 2>&1 &
fi
fi
echo -n "Starting ."
status=1
#echo $nb_ports
while [ "$status" != "$nb_ports" ]
do
tsm_status > /dev/null
sleep 5; echo -n "."
done
echo -n "[OK]"
echo
}
#------------------------------------------------
# tsm_stop ()
#------------------------------------------------
tsm_stop()
{
# Stop the TSM server
if [ `ps -fu $instance | grep dsmserv | grep -v grep > /dev/null 2>&1; echo $?` -ne 0 ]
then
echo "TSM server isn't Started"
exit 1
fi
echo "$(date '+%D %T') Stopping Tivoli Storage Manager Server"
PID=`cat $pid_file | awk -F'ID' '{print $2}' | awk '{print $1}'`
echo "$pid_file $PID"
kill $PID
echo -n "Stopping ."
status=0
while [ "$status" != "1" ]
do
status=`ps -fu $instance | grep dsmserv | grep -v grep > /dev/null 2>&1; echo $?`
sleep 5; echo -n "."
done
echo -n "[OK]"
echo
}
#------------------------------------------------
# tsm_status ()
#------------------------------------------------
tsm_status()
{
status=0
for port in $(cat $home_dir/dsmserv.opt | grep -v "^*" | egrep -i "^TCPPort |^TCPADMINPort " | awk '{print $2}' | sort | uniq)
do
netstat -an | grep LISTEN | grep "\:$port " > /dev/null 2>&1
if [ $? -eq 0 ]
then
let status="($status + 1)"
fi
done
}
#
# Main
#
rep=$*
nb_ports=$(cat $home_dir/dsmserv.opt | grep -v "^*" | egrep -i "^TCPPort |^TCPADMINPort " | awk '{print $2}' | sort | uniq | wc -l)
case "$rep" in
stop) logfile=$home_dir/tsm_$rep.log
touch $logfile
chown $instance.$inst_grp $logfile
tsm_stop 2>&1 | tee $logfile
;;
status) tsm_status
if [ $status -eq $nb_ports ]
then
echo "TSM server is Started"
exit 0
else
if [ `ps -fu $instance | grep dsmserv | grep -v grep > /dev/null 2>&1; echo $?` -eq 0 ]
then
echo "TSM is Starting"
exit 1
else
echo "TSM server isn't Started"
exit 2
fi
fi ;;
-h|help|-help)
usage ;;
*) rep=start
tsm_start;;
esac