[Dnsmasq-discuss] log rotation again...

Carlos Carvalho carlos at fisica.ufpr.br
Tue May 1 22:32:15 BST 2007

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.

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...

 >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.

Thanks for the explanation about sighup.

More information about the Dnsmasq-discuss mailing list