==== 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