Я пытаюсь отслеживать файл журнала, который часто вращается с помощью logrotate. но я не могу понять это правильно. Кто-нибудь может объяснить, как на самом деле работает logrotate?
Переименован ли файл и создан ли новый файл?
или файл скопирован с новым именем и текущий файл очищен?
Перед ротацией:
131887 -rw-r--r-- 1 root root 11385 Sep 25 03:40 /var/log/sas.log
После поворота:
131887 -rw-r--r-- 1 root root 0 Sep 25 04:40 /var/log/sas.log
131911 -rw-r--r-- 1 root root 11385 Sep 25 04:40 /var/log/sas.log.1
После вращения текущий файл журнала перемещен и возможно сжат, если это указано. Затем это создается снова. [ища источник кроме моего опыта]
, Который является проблемой, если услуга работает, которому открыли файл журнала во время вращения. Файл будет несвязанным, но дисковое пространство не действительно освободило, потому что файл все еще открыт.
Именно поэтому сервисы часто устанавливают более тщательно продуманный logrotate сценарий, обрабатывающий вращение. Как взгляд в качестве примера /etc/logrotate.d/nginx
поведение вращения определения для nginx
веб-сервер:
[....]
postrotate
invoke-rc.d nginx rotate >/dev/null 2>&1
endscript
postrotate
блок выполняется после того, как новый файл журнала был создан. Это вызывает сервисный сценарий nginx с rotate
, сообщение сервису к вновь открыло свой файл журнала .
Если усеченная опция будет включена в конфигурационном файле, то файл не будет перемещен - его содержание будет только скопировано в другой файл, который недавно создается, и текущий файл будет очищен, таким образом, inode идентификатор не изменится. На самом деле файл никогда не изменяется.
echo "options ath5k nohwcrypt=1" | sudo tee /etc/modprobe.d/ath5k.conf
, тогда перезагружают драйвер
– GAD3R
27 December 2016 в 01:33