У меня есть процесс, который записывает много данных в стандартный вывод, который я перенаправляю в файл журнала. Я хотел бы ограничить размер файла, периодически копируя текущий файл с новым именем и обрезая его.
Мои обычные методы усечения файла, например
cp /dev/null file
не работает, предположительно, потому что процесс использует его.
Есть ли способ урезать файл? Или удалить его и каким-то образом связать стандартный вывод процесса с новым файлом?
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