Довольно популярный и актуальный вопрос, который возникает, например, при чистке интенсивно растущих журналов постоянно запущенных процессов.
Ответ в двух словах
Обнулять можно, но для этого пишущий процесс должен открывать этот файл с использованием флага O_APPEND
. Ниже приводится соответствующий отрывок из open(2)
:
…
O_APPEND
The file is opened in append mode. Before eachwrite(2)
, the file offset is positioned at the end of the file, as if withlseek(2)
.O_APPEND
may lead to corrupted files on NFS file systems if more than one process appends data to a file at once. This is because NFS does not support appending to a file, so the client kernel has to simulate it, which can't be done without a race condition.
…
Несколько процессов, пишущих в один файл на NFS — это отдельный клинический случай. Пусть у нас есть один-единственный процесс, пишущий в файл.
Читать полностью »