meta data for this page
  •  

TSM trace rotator szkript

A Unix világából jól ismert logrotate alapelvét használva, a TSM trace file-okat időnként betömöríti gzip-pel. A TRACEFILE-ban adjuk meg a trace filet, amibe írja a TSM a trace kimenetet. A TRACEFLAGS paraméter tartalmazza a trace flag-eket, majd a trace-elni kívánt TSM szerver sztanzájához, név, TSM-es user és jelszó megadása jön, és egy MAXSIZE paraméter, amit ha elér a trace file mérete, a szkipt leállítja a trace-elést, betömöríti a trace file-lal azonos könyvtárba dátumbélyegezett gzip fájlba a trace fájlt, majd újraindítja a trace-elést. (De csak ha a trace file fájlrendszerének telítettsége 95% alatt van.) A rotáláskor pár másodperces trace kimenet veszteséggel kell számolni.

trace_rotator.sh
#!/bin/bash
TRACEFILE=/tmp/tsmserver_trace.trc
TRACEFLAGS="pvr mms na spi spid sessremote brnode addmsg"
TSMSERVER="tsmserver"
TSMUSER="admin"
TSMPASS="password"
MAXSIZE=512 #MBytes
 
 
control_c()
# run if user hits control-c
{
        echo "Terminating, disabling trace..."
        dsmadmc -id=$TSMUSER -pa=$TSMPASS -se=$TSMSERVER -dataonly=y <<COMMANDS
trace flush
trace end
trace disable *
COMMANDS
        exit 1
}
 
# trap keyboard interrupt (control-c)
trap control_c SIGINT
 
 
 
touch $TRACEFILE
chmod a+w $TRACEFILE
while [ $(df -P $TRACEFILE | tail -n1 | awk '{print int($3/$2*100)}') -le 90 ]; do
        dsmadmc -id=$TSMUSER -pa=$TSMPASS -se=$TSMSERVER -dataonly=y <<COMMANDS
trace disable *
trace enable $TRACEFLAGS
trace begin $TRACEFILE
COMMANDS
        while [ $(( $(ls -l $TRACEFILE | awk '{print $5}')/1024/1024)) -lt $MAXSIZE ]; do
                sleep 60
        done
        dsmadmc -id=$TSMUSER -pa=$TSMPASS -se=$TSMSERVER -dataonly=y <<COMMANDS
trace flush
trace end
trace disable *
COMMANDS
        gzip -c9 $TRACEFILE > ${TRACEFILE}.$(date "+%Y%m%d-%H%M").gz
        >$TRACEFILE
done