On Tue, Jul 22, 2003 at 01:21:21AM -0700, Andi Payn wrote:
> I agree; this would be a useful thing to add to the standard dnotify package.
> But I'd suggest two minor changes.
>
> It might be better to have an /etc/sysconfig/dnotify.d directory instead of a
> single file. This is easy, and potentially useful (e.g., for future packages
> to drop their own dnotify commands in place).
Done and attached. The README file that is attached should go in
/etc/sysconfig/dnotify.d for documentation purposes...
> Also, I think better examples would be very helpful. Yeah, it's not too hard
> to figure things out from the manpage, but on the other hand, the examples
> that are provided. are more apt to be confusing than helpful to a newbie.
>
> Running dnotify -A /etc -e echo change will print "change" whenever a file in
> /etc is read--but not when a file in /etc is changed. And the other example
> will call "informdelete" whenever a file in /var/mail is deleted, but also
> whenever one created. So, it'll be triggered whenever a mailbox is created or
> destroyed, which is unlikely to be a good reason to call something called
> informdelete. So, both of the examples are more likely to confuse than
> enlighten newbies.
>
> Also, the first example will print "change" to stdout, which is not likely to
> be what you want in a program backgrounded by an init script. And the second
> will likewise print its output to stdout--and, if informdelete returns
> nonzero, dnotify will print a warning to stderr. So, examples showing
> redirection would also be nice.
>
> And, since dnotify will run everything as root, examples showing dropping root
> might be handy.
>
> Finally, it would be nice to have examples of something someone might want to
> actually do.
>
> Something like this:
> -CDMRB -r /etc/httpd -e service httpd configtest >> /var/log/dnotify
> -CDMR -p1q0 /var/mirror/urpm -e su -c'/usr/local/bin/rebuildhdlist >>
> /var/log/urpmirror' urpmirror
> etc.
Thanks, I just copied the examples out of the man page. :)
Also attached is an updated copy with the examples fixed.
> It might even be better to have cron-ish TSV/CSV/whatever config files, so it
> could just be something like:
> #cond dir recurse procs queues user stdout[:stderr[:dnotifyerr]] cmd
> CDMRB /etc/httpd r - - - - service httpd configtest
> CDMR /var/mirror/urpm - 1 0 urpmirror /var/log/urpmirror:-
> /usr/local/bin/rebuildhdlist
>
> But that's probably overkill. Just a /etc/sysconfig/dnotify.d and a set of
> useful examples, and I'd be more than happy.
Yeah I think that's overkill.
--
Ben Reser <[EMAIL PROTECTED]>
http://ben.reser.org
"What upsets me is not that you lied to me, but that from now on I can
no longer believe you." -- Nietzsche
# Each file in this directory is interpreted the same way the
# /etc/sysconfig/dnotify file is. See its contents for details
# and examples.
#!/bin/sh
#
# Startup script for dnotify
#
# chkconfig: 345 91 15
# description: dnotify executes a command when the contents of a \
# directory change
# processname: dnotify
# config: /etc/sysconfig/dnotify
#
# By: Ben Reser <[EMAIL PROTECTED]>
# Source function library.
. /etc/rc.d/init.d/functions
[ -x /usr/bin/dnotify ] || exit 0
[ -r /etc/sysconfig/dnotify ] && [ -f /etc/sysconfig/dnotify ] || exit 0
[ -r /etc/sysconfig/dnotify.d ] && [ -d /etc/sysconfig/dnotify.d ] || exit 0
RETVAL=0
# See how we were called.
case "$1" in
start)
gprintf "Starting dnotify: "
egrep -shv '^([[:space:]]*#|[[:space:]]*$)' /etc/sysconfig/dnotify \
/etc/sysconfig/dnotify.d/* | while read args; do
/usr/bin/dnotify $args &
# Make sure any failure is saved in RETVAL
retval_temp=$?
[ $retval_temp -ne 0 ] && RETVAL=$retval_temp
done;
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/dnotify && success || failure
echo
;;
stop)
gprintf "Shutting down dnotify: "
killall /usr/bin/dnotify 1>&2 2> /dev/null
RETVAL=$?
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/dnotify && success || failure
echo
;;
status)
status dnotify
RETVAL=$?
;;
restart)
$0 stop
$0 start
RETVAL=$?
;;
*)
gprintf "Usage: %s {start|stop|status|restart" "$0"
exit 1
esac
exit $RETVAL
# This file allows you to specify instances of dnotify
# that should be started by the dnotify init script.
# Each line that does not start with a # character
# represents an instance of dnotify command to start.
# The line will contain the command line args to pass dnotify.
# E.G. (of course without the #):
# -CDMRB -r /etc/httpd -e service httpd configtest >> /var/log/dnotify
# -CDMR -p1q0 /var/mirror/urpm -e su -c'/usr/local/bin/rebuildhdlist >>
/var/log/urpmirror' urpmirror