#!/bin/ksh
#      ************************************************
#      *                                              *
#      *  Print Running IRIS (and Related) Processes  *
#      *                                              *
#      ************************************************
#
#                 COPYRIGHT (c) 1994, 1999, 2004  BY
#         SIGMET INCORPORATED, WESTFORD MASSACHUSETTS, U.S.A.
# 
# THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND  COPIED
# ONLY  IN  ACCORDANCE WITH  THE  TERMS  OF  SUCH  LICENSE  AND WITH THE
# INCLUSION OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE  OR  ANY OTHER
# COPIES  THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY
# OTHER PERSON.  NO TITLE TO AND OWNERSHIP OF  THE  SOFTWARE  IS  HEREBY
# TRANSFERED.

TMP1=/tmp/$$_tmp1 ; TMP2=/tmp/$$_tmp2 ; rm -f ${TMP1} ${TMP2}

trap "rm -f ${TMP1} ${TMP2} ; exit" INT EXIT

echo "IRIS Activity on '`hostname`' at: `date`"

# Make machine-dependent assignments
#
MACHINE=`uname -s`
# WARNING: Manually maintain this code in:
# make_iris_tape, install_iris, ps_iris & sig_uname_filter.
# Anything ever run by root cannot use sig_uname_filter.
if [ "$MACHINE" = 'IRIX64' ] ; then
  MACHINE="IRIX"
fi

if [ "${MACHINE}" = 'Linux' ] ; then
  alias PSCMD="ps -ewo user,ruser,pid,ppid,nice,pri,%cpu,bsdtime,%mem,vsz,args"
else
  alias PSCMD="ps -eaf"
fi

# Make up a list of all processes that are running on the system.
# Remove long path names, and indent for later printing.  Also remove
# any line that contains "IRIS_BIN=", as these may crop up during
# invocations of ps_iris from the install_iris script.
#
PSCMD | sed "s.${IRIS_BIN}rda/.." | sed "s.${IRIS_BIN}.." |
  sed "s/^/   /" | egrep -v "IRIS_BIN=" > ${TMP1}

HEADER="`egrep ' PID ' ${TMP1}`"

NEEDLF="false"

# Make up detached process list by searching for lines having "IRIS_" in them,
# but not "IRIS_ANT".
#
LIST="`egrep 'IRIS_' ${TMP1} | egrep -v 'IRIS_ANT'`"
if [ "${LIST}" != "" ] ; then
  if [ "${NEEDLF}" = "true" ] ; then echo "" ; fi ; NEEDLF="true"
  echo "Detached Processes:"
  echo "${HEADER}"
  echo "${LIST}"
fi

# Make up list of antenna processes
#
LIST="`egrep 'IRIS_' ${TMP1} | egrep 'IRIS_ANT'`"
if [ "${LIST}" != "" ] ; then
  if [ "${NEEDLF}" = "true" ] ; then echo "" ; fi ; NEEDLF="true"
  echo "Antenna Processes:"
  echo "${HEADER}"
  echo "${LIST}"
fi

# Reduce the total process list by the ones printed so far, and then
# search for matches with any executables from the IRIS directories.
#
LOCALFILES="checkup_man cpref cpreftree ibackup
            nodetimes sigfbackup struct_chk sigrcs"
egrep -v 'IRIS_' ${TMP1} | sed 's/$/ /' > ${TMP2}

IRISBINS="${IRIS_BIN}"
if [ -r ${IRIS_BIN}hardware ] ; then IRISBINS="${IRISBINS} ${IRIS_BIN}hardware/" ; fi
if [ -r ${IRIS_BIN}extras   ] ; then IRISBINS="${IRISBINS} ${IRIS_BIN}extras/"   ; fi
if [ -r ${IRIS_BIN}rda      ] ; then IRISBINS="${IRISBINS} ${IRIS_BIN}rda/"      ; fi

NEEDHD="true"
for ITEM in ${LOCALFILES} `ls -1 ${IRISBINS} | egrep -v 'ps_iris|IRIS'` ; do

  alias MATCHCMD="egrep '[0-9] ${ITEM} |[0-9] [^ ]*/${ITEM} ' ${TMP2}"
  MATCH="`MATCHCMD`"

  if [ "${MATCH}" != "" ] ; then
    if [ "${NEEDLF}" = "true" ] ; then echo "" ; fi ; NEEDLF="false"
    if [ "${NEEDHD}" = "true" ] ; then
      echo "Stand-alone Utilities:" ; echo "${HEADER}"
      NEEDHD="false"
    fi
    echo "${MATCH}"
  fi

done
