#!/bin/sh
VERSION='$Id: sm_os_newday,v 1.9 2006/04/24 12:13:57 sesam Exp $'
#

AWK=awk
LOGFILE="sm_os_newday.lgc"

read_sm_ini()
{
  . `grep -i '^sm_ini=' /etc/sesam2000.ini|cut -d"=" -f2` 2>/dev/null
}

sm_echo()
{
  #if [ "$VERBOSE" = "-v" ] 
  #then
    echo `date +"%Y%m%d %H:%M:%S"`: "$1" >&2
    echo `date +"%Y%m%d %H:%M:%S"`: "$1" >>${gv_rw_lgc}/${LOGFILE}
  #fi
}

get_pid()
{
# PID CALL
if [ "`uname`" = "FreeBSD" ]
then
  MYPS="ps axo pid,$2"
else
  MYPS="ps -e -o pid,$2"
fi
# GET ALL PIDs BUT NO sm_setup AND sm_os_startup

$MYPS | ${AWK} ''$1' && !/awk|sm_os_startup|sm_setup|sm_startup|sm_shutdown/ {print }' >>${gv_rw_lgc}/${LOGFILE}
$MYPS | ${AWK} ''$1' && !/awk|sm_os_startup|sm_setup|sm_startup|sm_shutdown/ {print }' >&2
$MYPS | ${AWK} ''$1' && !/awk|sm_os_startup|sm_startup|sm_setup|sm_shutdown/ {print $1}'
}

stop_process()
{
#set -x
sm_process=$1
sm_signal=${2:--2}
sm_sleep=${3:--10}
sm_psout=${4:-comm}
  
sm_echo "Terminate processes ${sm_process}"
pids=`get_pid "/${sm_process}/" $sm_psout`
sm_echo "Found PIDs: $pids"
if [ -n "$pids" ]
then
  echo $pids |xargs -t kill "${sm_signal}" 
  sleep ${sm_sleep}
  pids=`get_pid "/${sm_process}/" $sm_psout`
  if [ -n "$pids" ]
    then
      echo $pids |xargs -t kill -9  
      sleep 1
    fi 
fi
}


### STOP ALL SESAM PROCCESSES ###
stop_processes()
{
  # stop all sm_stpd,sbc and sm_ctrlc processes. 
  sm_echo "Stopping remaining Sesam jobs"
  stop_process 'sm_stpd$' -2 10
  stop_process 'sm_ctrlc$' -1 10
  stop_process 'sbc$' -1 1
}


### main ###

read_sm_ini
sm_echo "$0 $VERSION"


if  ps -ef | grep -v grep | grep sm_startup >/dev/null 
then
   :
else
   if  ps -ef | grep -v grep | grep sm_os_startup >/dev/null 
   then
      :
   else
      stop_processes
      $gv_ro_bin/sm_main reload node > /dev/null 2>&1
      exit_sts=$?
   fi
fi
sm_echo "$0 done"
exit $exit_sts

