How does logrotate handle open files? Can logrotate rotate files that a process has open?
3 Answers
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.
- 82,107
- 71
- 302
- 444
-
2It'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
For those applications that don't accept the signals from logrotate as Rory described, I use a couple of methods.
- Use the copytruncate option
- 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.
- 14,717
- 10
- 51
- 83
-
Sorry for beign too late, but i guess i could save some time to others looking for this problem. Take a look to another approach to solve this. https://unix.stackexchange.com/a/122942/189725 β Victor May 12 '17 at 23:18
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.
- 30,211
- 62
- 184
- 246
-
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