[Mimedefang] HUGE problem with mimedefang
James Ebright
jebright at esisnet.com
Thu Apr 21 14:08:29 EDT 2005
On Thu, 21 Apr 2005 11:27:44 -0400, Lisa Casey wrote
> status is not an option to /etc/init.d/mimedefang
> on my system:
>
> [root at Raydeus-Dee init.d]# /etc/init.d/mimedefang
> Usage: /etc/init.d/mimedefang {start|stop|restart|reread|reload}
It is part of the redhat init script included with the tarball but you can
easily duplicate it on other systems, I just ripped this out of the redhat
init.d functions library (add this to your init.d/mimedefang):
status() {
local base=${1##*/}
local pid
# Test syntax.
if [ "$#" = 0 ] ; then
echo $"Usage: status {program}"
return 1
fi
# First try "pidof"
pid=`pidof -o $$ -o $PPID -o %PPID -x $1 || \
pidof -o $$ -o $PPID -o %PPID -x ${base}`
if [ -n "$pid" ]; then
echo $"${base} (pid $pid) is running..."
return 0
fi
# Next try "/var/run/*.pid" files
if [ -f /var/run/${base}.pid ] ; then
read pid < /var/run/${base}.pid
if [ -n "$pid" ]; then
echo $"${base} dead but pid file exists"
return 1
fi
fi
# See if /var/lock/subsys/${base} exists
return 2
fi
echo $"${base} is stopped"
return 3
}
Then add the following section to use the above function:
status)
status $prog
status $prog-multiplexor
RETVAL=$?
if [ $RETVAL = 0 -a -x $PROGDIR/md-mx-ctrl ] ; then
$PROGDIR/md-mx-ctrl -s $MX_SOCKET barstatus
fi
;;
$PROGDIR and $prog are set at top of mimedefang init.d script and RETVAL is
initialized as 0 ($prog is mimedefang and $PROGDIR is where it is installed)
Also, I find that you should test for and remove any stale locks in the script
(I do in my version that has been in production for about a year now). In
Davids script add it after the sleep, something like:
if [ -e /var/lock/subsys/mimedefang ]; then \
/bin/rm -f /var/lock/subsys/mimedefang
fi
Also I find the script to be more readable using square brackets instead of
the test keyword and since you are testing for not 0 it can be shortened to:
if [ $? ]; then \
.....
fi
Another item that this script will not catch and using the redhat status code
will not catch or remedy are hung md processes... they will cause a failure if
not killed off using a kill -9 (note, I have only seen old hung processes on
two systems.. both of which get slammed by blackberries so I suspect it is a
high load or large number of children issue, in bursts, and have worked around
the issue and not really been able to spend the time needed to analyze why).
Jim
--
EsisNet.com Webmail Client
More information about the MIMEDefang
mailing list