У меня есть процесс, который записывает много данных в stdout, которые я перенаправляю в файл журнала. Я хотел бы ограничить размер файла, периодически копируя текущий файл в новое имя и обрезая его.
Мои обычные методы обрезки файла, например
cp /dev/null file
не работают, по-видимому, потому, что процесс использует его.
Есть ли способ обрезать файл? Или удалить его и каким-то образом связать процесс 'stdout с новым файлом?
FWIW, это сторонний продукт, который я не могу изменить, чтобы изменить его модель ведения журнала.
РЕДАКТИРОВАТЬ перенаправление по файлу, похоже, имеет ту же проблему, что и копия выше - файл возвращается к своему предыдущему размеру в следующий раз, когда он записывается на:
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