Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 5 Dec 2002 16:29:57 +0100 (CET)
From:      Andrew Prewett <andrew@kronos.HomeUnix.com>
To:        freebsd-questions@FreeBSD.ORG
Subject:   Re: run command on logfile before it's rotated
Message-ID:  <20021205154105.E39554-100000@slave.east.ath.cx>
In-Reply-To: <1039067690.298.18.camel@asa.gascom.net.ru>
References:  <93B9E916-07D2-11D7-B076-0003936CEB72@garbage.dk>  <20021204220240.GY467@sub21-156.member.dsl-only.net> <1039067690.298.18.camel@asa.gascom.net.ru>

next in thread | previous in thread | raw e-mail | index | archive | help
Today Akifyev Sergey wrote:

> On Thu, 2002-12-05 at 01:02, Nathan Kinkade wrote:
> > On Wed, Dec 04, 2002 at 10:51:43PM +0100, Thomas von Hassel wrote:
> > > I've got my system set up to rotate the maillog every day at midnight.
> > > What do i do if i want to run a command on the logfile just before it's
> > > rotated ?
> > >
> > > /thomas
> > > --
> > > Thomas von Hassel
> > > DarX @ irc
> > > darxmac @ AIM/iChat
> > > Powered by inkwell...!
> >
> > How about just setting a cron job to run some reasonable period prior
> > to newsyslog being run?
>
> It's incorrect way to do things, because some entries could be added to
> syslog _after_ the command is run, but _before_ newsyslog. Instead you
> should call some script via cron with crontab entry like this:
>
> # rotate log files every hour, if necessary
> 0       *       *       *       *       root	/usr/bin/lock_script.sh
>
> And the script must contain something like:
>
> #!/bin/sh
> for $STR in `cat /etc/newsyslog.conf |grep -v '^[:space:]*#.*$'|cut
> -f1`; do
> 	lockf "${STR}" newsyslog.sh "${STR}"
> done

 This is _advisory_ lock, not _mandatory_. Syslogd could write to the
file happily while `your_command' is running or/and between `your_command'
and newsyslog.

Maybe this is a little closer (not tested):
kill -17 <syslogd pid>; my_scrypt; newsyslog; kill -19 <syslogd pid>
Ie.: STOP syslogd; run the script(s); rotate logs; CONTinue syslogd.
But if there is to much logging between the two signals, then messages could
be lost.

	-andrew

>
> The newsyslog.sh should contain:
>
> #!/bin/sh
> your_command "${1}"
> newsyslog "${1}"
>

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-questions" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20021205154105.E39554-100000>