Причина, что апачу нужна перезагрузка, состоит в том, что, после того как он открыл файл, это получает дескриптор файла к нему, и это будет продолжать писать в тот дескриптор файла. При перемещении файла он не видит, что, это просто продолжает писать в тот же дескриптор. Когда Вы сделаете перезагрузку, она откроет файл снова и получит новый дескриптор.
Для предотвращения перезагрузки, вместо того, чтобы переместить файл, можно скопировать его и освободить старый файл. Тем путем апач может продолжать писать в тот же дескриптор файла. Вы делаете это путем добавления опции, "copytruncate" к logrotate файлу конфигурации, как это:
/apache/*log {
copytruncate
compress
dateext
rotate 365
size=+300M
olddir /log/old/apache
notifempty
missingok
}
Если я прочитал документацию правильно, это дизайном:
The only difference between this single-instance mode and the legacy mode
is the presence of new, '/dev/pts/ptmx' node with permissions 0000, which
can safely be ignored.