For monitoring I would try connecting to it; check that it's work spool is not growing larger than X or something else that works for the specific application.
For keeping a daemon alive I usually use the following for that kind of thing. If the process really wants to exit it does so with exit code 10; otherwise it'll get started again.
#!/bin/sh
# Keep a daemon running and running and running ...
#
# Normally starts a process in the background
# unless "bg" is given as the second argument.
trap '' 1 15 # ignore SIG HUP & TERM
PATH=/usr/xpg4/bin:$PATH # Solaris compatibility
if test `id -u` = 0
then
su - foo -c "$0 $1" &
exit
fi
if test "$1" != "-bg"
then
echo "$0 $$: Starting $* in background"
$0 -bg "$@" &
exit
fi
shift # remove the -bg
PROGRAM=$1; shift # get and remove program name
while true
do
echo "$0 $$: Starting $PROGRAM $@"
$PROGRAM "$@" < /dev/null
status=$?
if test $status -eq 10 ; then
msg="$PROGRAM $@ exited with status 10 - not restarted"
logger -p 'local0.warning' "$msg"
echo "$msg"
exit 0
fi
msg="$PROGRAM $@ exited with status $status - will restart (pa
+rent=$$)"
logger -p 'local0.warning' "$msg"
echo "$msg"
sleep 2
done
(replace foo with something else if you want to make sure you always start the program as a specific user).
- ask
--
ask bjoern hansen, http://ask.netcetera.dk/ !try; do();
|