This is a sample probe run script. The pid is managed to avoid parallel runs and the output is redirected in a temporary file that is then send.
#!/bin/bash
JAVA_HOME=/usr/java/current; export JAVA_HOME
PGDATA=/opt/my_app/pgdata; export PGDATA
HOME=/opt/esis-framework/trunk
PID=/opt/my_app/var/run/my_app_fetch.pid
NOW=`date +%s`
OUTPUT=/tmp/my_app_fetch_out_$NOW
silent=1
while [ "$1" != "" ]; do
case $1 in
-v | --verbose ) shift
silent=0
;;
* ) exit 1
esac
shift
done
if [ -f $PID ]; then
pid=`cat $PID`
if [ "$silent" = "0" ]; then
echo "Found PID file for pid $pid."
echo "Checking $pid is an existing PID."
fi
nbf=` ps -p $pid | wc -l`
if [ $nbf -eq 1 ]; then
if [ "$silent" = "0" ]; then
echo "PID $pid do not match any running process"
fi
rm -f $PID
fi
fi
# Avoids a second launch
if [ -f $PID ]; then
if [ "$silent" = "0" ]; then
echo "A fetch is already running with PID $PID."
echo "You should wait for it to complete."
fi
exit 1;
else
echo $$ > $PID
fi
(cd $HOME
touch $OUTPUT
. ./env.sh >> $OUTPUT 2>&1
scripts/cmd probes xml app/my_app/data/sample-probes.xml >> $OUTPUT 2>&1
end=`date +%s`
diff=`expr $end - $NOW`
echo "Started at $NOW : Ended at $end" >> $OUTPUT 2>&1
echo "Elapsed time = $diff seconds" >> $OUTPUT 2>&1
# email output
scripts/cmd emails email_text support@example.com probes $OUTPUT
rm $OUTPUT)
rm $PID