Greetings,

I have a redhat 9 system running a version .77 Shupp toaster. I found a
script which I use with daemontools-handled services which works great for
me; makes things 'feel' like sys-V style. Found it at
http://www.lifewithdjbdns.com/#SysV-style%20init%20script

I would recommend it to other users running daemontools-supervised services;
however I have trouble with the log service scripts (eg.
/service/qmail-pop3d/log/) - they won't come back up after a

]# /etc/init.d/svscan restart

Here is an example session transaction illustrating what I mean:

----------------------------------------------------------------------------
------

]# ps -ef f

root      1599     1  0 02:19 ?        S      0:00 /bin/sh
/command/svscanboot
root      1601  1599  0 02:19 ?        S      0:00  \_ svscan /service
root      1603  1601  0 02:19 ?        S      0:00  |   \_ supervise
qmail-send
qmails    1614  1603  0 02:19 ?        S      0:00  |   |   \_ qmail-send
root      1626  1614  0 02:19 ?        S      0:00  |   |       \_
qmail-lspawn ./Maildir/
qmailr    1627  1614  0 02:19 ?        S      0:00  |   |       \_
qmail-rspawn
qmailq    1628  1614  0 02:19 ?        S      0:00  |   |       \_
qmail-clean
root      1604  1601  0 02:19 ?        S      0:00  |   \_ supervise log
qmaill    1613  1604  0 02:19 ?        S      0:00  |   |   \_
/usr/local/bin/multilog t s5000000 /var/log/qmail
root      1605  1601  0 02:19 ?        S      0:00  |   \_ supervise
qmail-smtpd
vpopmail  1629  1605  0 02:19 ?        S      0:00  |   |   \_
/usr/local/bin/tcpserver -v -H -R -l 0 -x /home/vpopmail/etc/tcp.smtp
root      1606  1601  0 02:19 ?        S      0:00  |   \_ supervise log
qmaill    1630  1606  0 02:19 ?        S      0:00  |   |   \_
/usr/local/bin/multilog t /var/log/qmail/smtpd
root      1607  1601  0 02:19 ?        S      0:00  |   \_ supervise
qmail-pop3d
vpopmail  1615  1607  0 02:19 ?        S      0:00  |   |   \_
/usr/local/bin/tcpserver -l 0 -R -H -v -u89 -g89 0 110 /var/qmail/bin
root      1608  1601  0 02:19 ?        S      0:00  |   \_ supervise log
qmaill    1698  1608  0 02:21 ?        S      0:00  |   |   \_ multilog t
/var/log/qmail/pop3d
root      1609  1601  0 02:19 ?        S      0:00  |   \_ supervise
qmail-pop3ds
vpopmail  1617  1609  0 02:19 ?        S      0:00  |   |   \_
/usr/local/bin/tcpserver -l 0 -R -H -v -u89 -g89 0 995 /usr/sbin/stun
root      1610  1601  0 02:19 ?        S      0:00  |   \_ supervise log
qmaill    1633  1610  0 02:19 ?        S      0:00  |   |   \_ multilog t
/var/log/qmail/pop3ds
root      1611  1601  0 02:19 ?        S      0:00  |   \_ supervise clamd
clamav    1631  1611  0 02:19 ?        S      0:03  |   |   \_
/usr/local/sbin/clamd
root      1612  1601  0 02:19 ?        S      0:00  |   \_ supervise log
clamav    1623  1612  0 02:19 ?        S      0:00  |       \_
/usr/local/bin/multilog t /var/log/clamd
root      1602  1599  0 02:19 ?        S      0:00  \_ readproctitle service
errors: ...............................................

]# svstat /service/qmail-pop3d/log
/service/qmail-pop3d/log: up (pid 1698) 790 seconds
]# svstat /service/qmail-pop3d/log
/service/qmail-pop3d/log: down 10 seconds, normally up
]# svc -u /service/qmail-pop3d/log/
]# svstat /service/qmail-pop3d/log
/service/qmail-pop3d/log: up (pid 2021) 3 seconds
]# service svscan status
svscan (pid 1601) is running...
/service/clamd: up (pid 1631) 1000 seconds
/service/qmail-pop3d: up (pid 1615) 1000 seconds
/service/qmail-pop3ds: up (pid 1617) 1000 seconds
/service/qmail-send: up (pid 1614) 1000 seconds
/service/qmail-smtpd: up (pid 1629) 1000 seconds

...so far so good...


]# service svscan restart
Shutting down svscan:                                      [  OK  ]
Ending supervision of service clamd:                       [  OK  ]
Stopping service clamd:                                    [  OK  ]
Ending supervision of service qmail-pop3d:                 [  OK  ]
Stopping service qmail-pop3d:                              [  OK  ]
Ending supervision of service qmail-pop3ds:                [  OK  ]
Stopping service qmail-pop3ds:                             [  OK  ]
Ending supervision of service qmail-send:                  [  OK  ]
Ending supervision of service log qmail-send:              [  OK  ]
Stopping service qmail-send:                               [  OK  ]
Stopping service log qmail-send:                           [  OK  ]
Ending supervision of service qmail-smtpd:                 [  OK  ]
Ending supervision of service log qmail-smtpd:             [  OK  ]
Stopping service qmail-smtpd:                              [  OK  ]
Stopping service log qmail-smtpd:                          [  OK  ]
Starting svscan:                                           [  OK  ]
]# svstat /service/qmail-pop3d
/service/qmail-pop3d: up (pid 2155) 10 seconds
]# svstat /service/qmail-pop3d/log
/service/qmail-pop3d/log: up (pid 2438) 0 seconds

/* ...uh-oh... */

]# ps -ef f

root      1599     1  0 02:19 ?        S      0:00 /bin/sh
/command/svscanboot
root      1602  1599  0 02:19 ?        S      0:00  \_ readproctitle service
errors: ...............................................
root      1608     1  0 02:19 ?        S      0:00 supervise log
qmaill    2505  1608  1 02:38 ?        Z      0:00  \_ [multilog <defunct>]
root      1610     1  0 02:19 ?        S      0:00 supervise log
qmaill    2507  1610  1 02:38 ?        Z      0:00  \_ [multilog <defunct>]
root      1612     1  0 02:19 ?        S      0:00 supervise log
clamav    2506  1612  1 02:38 ?        Z      0:00  \_ [multilog <defunct>]
root      2139     1  0 02:36 pts/0    S      0:00 /usr/local/bin/svscan
root      2140  2139  0 02:36 pts/0    S      0:00  \_ supervise qmail-send
qmails    2141  2140  0 02:36 pts/0    S      0:00  |   \_ qmail-send
root      2147  2141  0 02:36 pts/0    S      0:00  |       \_ qmail-lspawn
./Maildir/
qmailr    2148  2141  0 02:36 pts/0    S      0:00  |       \_ qmail-rspawn
qmailq    2149  2141  0 02:36 pts/0    S      0:00  |       \_ qmail-clean
root      2143  2139  0 02:36 pts/0    S      0:00  \_ supervise log
qmaill    2144  2143  0 02:36 pts/0    S      0:00  |   \_
/usr/local/bin/multilog t s5000000 /var/log/qmail
root      2145  2139  0 02:36 pts/0    S      0:00  \_ supervise qmail-smtpd
vpopmail  2150  2145  0 02:36 pts/0    S      0:00  |   \_
/usr/local/bin/tcpserver -v -H -R -l 0 -x /home/vpopmail/etc/tcp.smtp.cdb
root      2146  2139  0 02:36 pts/0    S      0:00  \_ supervise log
qmaill    2164  2146  0 02:36 pts/0    S      0:00  |   \_
/usr/local/bin/multilog t /var/log/qmail/smtpd
root      2154  2139  0 02:36 pts/0    S      0:00  \_ supervise qmail-pop3d
vpopmail  2155  2154  0 02:36 pts/0    S      0:00  |   \_
/usr/local/bin/tcpserver -l 0 -R -H -v -u89 -g89 0 110 /var/qmail/bin/qma
root      2159  2139  0 02:36 pts/0    S      0:00  \_ supervise
qmail-pop3ds
vpopmail  2160  2159  0 02:36 pts/0    S      0:00  |   \_
/usr/local/bin/tcpserver -l 0 -R -H -v -u89 -g89 0 995 /usr/sbin/stunnel
root      2165  2139  0 02:36 pts/0    S      0:00  \_ supervise clamd
clamav    2166  2165  4 02:36 pts/0    S      0:03  |   \_
/usr/local/sbin/clamd
root      2493  2139  0 02:38 pts/0    Z      0:00  \_ [supervise <defunct>]
root      2494  2139  0 02:38 pts/0    Z      0:00  \_ [supervise <defunct>]
root      2495  2139  0 02:38 pts/0    Z      0:00  \_ [supervise <defunct>]

----------------------------------------------------------------------------
------

I killed my log processes... and I can't get them back.

I know this is a special-case script (I will post the contents of it
underneath) but I often, in testing, and just over time, manage to kill one
or other of my log services, and I can never get them running again - I
always have to reboot !?! I wish I could find what stops
/service/qmail-pop3d/log and /service/qmail-pop3ds/log from starting. They
just keep starting, exiting, and starting again endlessly. I have been over
all DJB's recommendations and other qmail guides on daemontools, but I can't
find a lock file or anything obvious like that.

Can anybody tell me how I might go about getting my log services restarted
in this situation, without a reboot? FYI I have:

SV:123456:respawn:/command/svscanboot

at the end of /etc/inittab

And, as promised, here is my /etc/init.d/svscan

----------------------------------------------------------------------------
------

#!/bin/sh
#
# svscan        Start and stop the svscan daemon.
#
# description: svscan is a general-purpose service manager, handling \
#              execution of daemons, and ensuring their operation.
# processname: svscan

# Source function library.
. /etc/rc.d/init.d/functions

SERVICESDIR='/service'
BINDIR='/usr/local/bin'
LOCKDIR='/var/lock/subsys'
PATH=$PATH:$BINDIR

[ -f $BINDIR/svscan ] || exit 0
[ -d $SERVICESDIR ] || exit 0

RETVAL=0

# See how we were called.
case "$1" in
  start)
        # Start svscan.
        action 'Starting svscan:' "/bin/sh -c '( cd $SERVICESDIR && exec
$BINDIR/svscan ) &'"
        RETVAL=$?
        [ $RETVAL -eq 0 ] && touch $LOCKDIR/svscan
        ;;
  stop)
        # Stop svscan.
        echo -n "Shutting down svscan:"
        killproc svscan
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && rm -f $LOCKDIR/svscan

        # Stop supervised services. Do this last, so that
        # svscan doesn't restart them.
        x="$allow_null_glob_expansion"
        allow_null_glob_expansion=1
        for service in $SERVICESDIR/*
        do
              $BINDIR/svok $service || continue
              action "Ending supervision of service `basename $service`:"
"$BINDIR/svc -x $service"
              [ -k $service ] && action "Ending supervision of service log
`basename $service`:" "$BINDIR/svc -x $service/log"
              action "Stopping service `basename $service`:" "$BINDIR/svc -d
$service"
              [ -k $service ] && action "Stopping service log `basename
$service`:" "$BINDIR/svc -d $service/log"
        done
        allow_null_glob_expansion="$x"
        ;;
  status)
        status svscan
        RETVAL=$?
        x="$allow_null_glob_expansion"
        allow_null_glob_expansion=1
        for service in $SERVICESDIR/*
        do
                $BINDIR/svstat $service
        done
        allow_null_glob_expansion="$x"
        ;;
  restart|reload)
        $0 stop
        $0 start
        RETVAL=$?
        ;;
  *)
        echo "Usage: svscan {start|stop|restart|reload|status}"
        exit 1
esac

exit $RETVAL

----------------------------------------------------------------------------
------

Sorry for the huge post; trying to be as clear/detailed as possible.

Regards,

David Branford

Aternox Design
www.aternoxdesign.com.au
<[EMAIL PROTECTED]>


Reply via email to