Truncating a file while it's being used (Linux)
Posted
by
Hobo
on Stack Overflow
See other posts from Stack Overflow
or by Hobo
Published on 2009-06-11T09:55:58Z
Indexed on
2012/11/19
5:01 UTC
Read the original article
Hit count: 104
I have a process that's writing a lot of data to stdout, which I'm redirecting to a log file. I'd like to limit the size of the file by occasionally copying the current file to a new name and truncating it.
My usual techniques of truncating a file, like
cp /dev/null file
don't work, presumably because the process is using it.
Is there some way I can truncate the file? Or delete it and somehow associate the process' stdout with a new file?
FWIW, it's a third party product that I can't modify to change its logging model.
EDIT redirecting over the file seems to have the same issue as the copy above - the file returns to its previous size next time it's written to:
ls -l sample.log ; echo > sample.log ; ls -l sample.log ; sleep 10 ; ls -l sample.log
-rw-rw-r-- 1 user group 1291999 Jun 11 2009 sample.log
-rw-rw-r-- 1 user group 1 Jun 11 2009 sample.log
-rw-rw-r-- 1 user group 1292311 Jun 11 2009 sample.log
© Stack Overflow or respective owner