Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

How does logrotate handle open files? Can logrotate rotate files that a process has open?

share|improve this question

3 Answers 3

up vote 5 down vote accepted

For those applications that don't accept the signals from logrotate as Rory described, I use a couple of methods.

  1. Use the copytruncate option
  2. Add a post-rotate statement to restart the service

The decision of which one to use depends on both size of log files and necessity of seamless logs. That's going to be a risk analysis on your own part. However, to give an example, I use a post-rotate restart on certain logs where I actually should be using a copytruncate. However, the files are often several gigs and the copy could take a long enough time that losing a second or two each night was preferable.

share|improve this answer

Looks like I might want the following, but still interested in anyone's expertise on the topic:

copytruncate
              Truncate  the original log file to zero size in place after cre‐
              ating a copy, instead of moving the old log file and  optionally
              creating  a new one.
share|improve this answer
    
It's like doing "cp something.log something.log.1; :> something.log" so the file get empty but the filehandle on it is not break. The problem is the time between the 2 commands, you could loose some line of logs –  radius Aug 18 '09 at 15:52

logrotate will send the correct signal to the process to tell it to reopen log files. It works out of the box for things like apache or mysql.

You can see this in the postrotate script for apache. If you have your own daemon, and you want logrotate to work with it, then make sure it listens for a certain signal and reopens log files.

If you can't change the programme, then you could see if the daemon has a way to automatically flush logs. Or add a prerotate that stops the server, and a postrotate that starts it again.

share|improve this answer
    
Okay, don't think I will get the developers to do that, but nice to know what the standard is :-) –  Kyle Brandt Aug 18 '09 at 15:22

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.