on your site http://apathy.guiltyparty.org/u/doc/mathopd/ i found the following:


if you use logrotate to manage /var/log, create a file called "mathopd" in /etc/logrotate.d/ and insert this:
/var/log/mathopd/log.* {
weekly
missingok
rotate 7
compress
create 640 daemon daemon
sharedscripts
postrotate
killall mathopd
sleep 5
/usr/local/sbin/mathopd < /etc/mathopd.conf
endscript
}




which kills mathopd.
that's bad housekeeping and unnessacary.

see the attached file (an init-script) i wrote.

option 'force-nextlog' reopens the log, which is
given by
        Log /var/mathopd/log/%Y-%m-%d
in mathopd.conf.

at 00:00:00 daily cron executes the script
        /etc/init.d/mathopd force-nextlog
so i get a daily log without any extra program.


it was originally written for suse linux and it needs some customizing but can do a great job. you can put it on your web-page if you'd like to.
#!/bin/sh
# init.d script for mathopd. Set the variables below to something fitting..
# This is only an example script.
#############

# The name of the executeable.
#
mathopdexec=mathopd

# The server directory where the executable is located.
#
mathopdhome=/usr/local/sbin/

# Set this to something unique to be able to stop, reload and restart
# with this init script. It will override the setting in the config
# interface. '0' is typically replaced with the uid.
#
pidfile=/var/mathopd/pid

# Set these to kill all processes owned by wwwuser on stop. Useful to
# reap CGI scripts.
#
# killallwww=yes
# wwwuser=www

umask 022

# If you want to start with another configuration directory:
#
# configdir=dirname

# Insert the name of the Configuration-File here
# 
configfile=mathopd.conf

### You should not _have_ to change anything below here...

case $1 in
        'start')
                echo "Starting mathopd from $mathopdhome..."
                if [ -z "$pidfile" ]; then
                        echo "Warning: No pid file set - cannot stop or reload."
                elif [ -f "$pidfile" ]; then
                        read pid < $pidfile
                        if kill -0 $pid ; then
                                echo "mathopd is already running."
                                exit 0
                        fi
                        rm -f $pidfile
                        if [ -f "$pidfile" ]; then
                                echo Cannot remove pid file $pidfile
                                exit 1
                        fi
                fi
                if [ -x "$mathopdhome/$mathopdexec" ]; then
                        cd $mathopdhome
                        ./$mathopdexec < $configfile 2>/dev/null
                        echo "Done."
                else
                        echo "I cannot find the mathopd dir '('$mathopdhome')'"
                fi
        ;;

        'restart')
                if [ -z "$pidfile" ] ; then
                        echo "No pid file set."
                        exit 1
                fi
                echo Restarting mathopd...
                if [ -f "$pidfile" ] ; then
                        read pid < $pidfile
                        kill -INT $pid || kill 2 $pid
                        rm "$pidfile"
                        echo "Stopping mathopd..."
                else
                        echo "mathopd doesn't seem to be running."
                fi
                echo Starting a new mathopd in $mathopdhome...
                if [ -x "$mathopdhome/$mathopdexec" ]; then
                        cd $mathopdhome
                        ./$mathopdexec < $configfile 2>/dev/null
                else
                        echo "I cannot find the mathopd dir '('$mathopdhome')'"
                fi
                echo "Done."
        ;;

        'stop')
                if [ -z "$pidfile" ] ; then
                        echo "No pid file set."
                        exit 1
                fi
                echo "Stopping mathopd..."
                if [ -f $pidfile ] ; then
                        if kill `cat $pidfile` ; then
                                echo mathopd stopped.
                        fi
                        rm $pidfile
                else
                        echo "mathopd doesn't seem to be running."
                fi
                # Get all the CGI scripts... :-)
                if [ x$killallwww = xyes ] ; then
                        echo Killing all programs running as the $wwwuser user.
                        su $wwwuser -c "kill -9 -1"
                fi
        ;;

        'force-nextlog')
                # send HUP (=1)
                /sbin/killproc -1 "$mathopdhome/$mathopdexec"
                echo "logs reopened."
        ;;

        'kill-connections')
                # send USR1 (=10)
                /sbin/killproc -10 "$mathopdhome/$mathopdexec"
                echo "all connections killed."
        ;;

        'safe-stop')
                # send USR2 (=12)
                /sbin/killproc -12 "$mathopdhome/$mathopdexec"
                rm $pidfile
                echo "waiting for connections to end and shutting down."
        ;;

        'reap-children')
                # send CHLD (=17)
                /sbin/killproc -17 "$mathopdhome/$mathopdexec"
                echo "reaped children."
        ;;

        'switch-debug')
                # send QUIT (=3)
                /sbin/killproc -3 "$mathopdhome/$mathopdexec"
                echo -n "debugging mode switched "
                echo -n `tail -n 1 /var/mathopd/errorlog | cut -d " " -f 10`
                echo "."
        ;;

        'debug')
                # send QUIT (=3)
                /sbin/killproc -3 "$mathopdhome/$mathopdexec"
                echo -n "debugging mode switched "
                echo -n `tail -n 1 /var/mathopd/errorlog | cut -d " " -f 10`
                echo "."
        ;;

        'safe-restart')
                # send USR2 (=12)
                /sbin/killproc -12 "$mathopdhome/$mathopdexec"
                rm $pidfile
                echo "waiting for connections to end and shutting down."
                if [ -x "$mathopdhome/$mathopdexec" ]; then
                        cd $mathopdhome
                        ./$mathopdexec < $configfile 2>/dev/null
                        echo "now starting new instance with new configuration."
                else
                        echo "I cannot find the mathopd dir '('$mathopdhome')'"
                fi
        ;;

        *)
                echo "Syntax: $0 
[start|stop|safe-stop|restart|safe-restart|force-nextlog|kill-connections|switch-debug]"
        ;;
esac

exit 0

Reply via email to