В он - самая простая реализация, можно реализовать вращение журнала NGINX как следующее:
mv access.log access.log.0
kill -USR1 `cat master.nginx.pid`
Мой вопрос. У нас есть проблема параллелизма здесь? Я имею в виду, если NGINX пишет запись в журнале между двумя действиями (1) файл был переименован и (2) это заставило команду перезагружать, некоторые записи в журнале могли быть просто потеряны?
Перед отправкой сигнала USR1 подождите 15 секунд, и вы увидите, что * access.log.0 "все еще используется. Это происходит из-за того, что журнал открыт для записи на основе inode, а не имя файла. Таким образом, этот метод безопасен для одновременного использования: mv + USR1