[Dnsmasq-discuss] log rotation again...

Simon Kelley simon at thekelleys.org.uk
Sat May 5 17:31:48 BST 2007


Carlos Carvalho wrote:
> Simon Kelley (simon at thekelleys.org.uk) wrote on 1 May 2007 20:23:
>  >> Exactly, that's what I had in mind. The savelog script in Debian can
>  >> also do it.
>  >
>  >Another new thing I learned today. I don't like savelog's compression 
>  >scheme though. Ignoring the older files, is seems to to
>  >
>  >mv log.0 log.1
>  >compress log.1
>  >touch log.0
>  >
>  >and then the signal can be sent. Since the old file (renamed to log.1) 
>  >can still be written 'till the signal is sent, and some time afterwards,
>  >then the compressedfile might be written to and corrupted. I think the 
>  >scheme where log.0 and log.1 are uncompressed and only log.2, log3 etc 
>  >are compressed is much safer.
> 
> Agreed. However the risky behavior is not savelog's. With
> savelog one has
> 
>    file   file.0   file.1.{gz,bz2} etc.
> 
> "file" is the newly created, file.0 is the previous version of "file"
> just renamed that may still be in use. For this reason savelog
> compresses only starting with file.1. I agree the man page is
> misleading but the code makes this clear, and there's also a comment
> in the beginning:
> 
> # The savelog command saves and optionally compresses old copies of files.
> # Older version of 'file' are named:
> #
> #               'file'.<number><compress_suffix>
> #
> # where <number> is the version number, 0 being the newest.  By default,
> # version numbers > 0 are compressed (unless -l prevents it). The
> # version number 0 is never compressed on the off chance that a process
> # still has 'file' opened for I/O.
> 

I understand: I was mislead by the manpage.

> On the other hand, the default with logrotate is not the safe one. If
> one specifies compress without delaycompress the mess you described
> happens. One must also be careful with postrotate scripts for a group,
> because these are only executed after all logs have been rotated, and
> compression starts right after each rotation. This means the group
> postrotate, which usually sends the HUP to the daemon(s), will only
> run after compression has started. If delaycompress is not used...
> oops...

That explains why the Debian logrotate config uses delaycompress.
> 
>  >I'll get some code out this week sometime, unless I get too busy.
> 
> Wonderful! :-) I'll test it as soon as you post it.

OK, it's there:

http://www.thekelleys.org.uk/dnsmasq/test-releases/dnsmasq-2.40test4.tar.gz

Cheers,

Simon.



More information about the Dnsmasq-discuss mailing list