User Tools

Site Tools


tsm:tsm_start_stop

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
tsm/tsm_start_stop.txt · Last modified: 2021/01/01 21:25 (external edit)