Как на самом деле работает copytruncate? [закрыто]

Итак, вы хотите разместить веб-сайт wordpress в kali linux внутри виртуальной машины virtualbox, под хостом Windows?

Сколько неверных решений влияет на мужчине нужно что-то сделать, чтобы попасть в эту ситуацию?

Если вы хотите получить ответ, http://www.howtogeek.com/122641/how-to-forward-ports-to-a-virtual-machine -and-use-it-as-a-server /

Но если вы хотите получить реальный ответ, я настоятельно рекомендую вам пересмотреть то, что вам нужно делать, и сделать это должным образом.

4
15.10.2018, 17:26
1 ответ

Усечение файла журнала на самом деле работает, потому что записывающие устройства открывают файлы для записи с помощью O _APPEND.

Из откройте (2)справочную страницу:

O_APPEND: The file is opened in append mode. Before each write(2), the file offset is positioned at the end of the file, as if with lseek(2). The modification of the file offset and the write operation are performed as a single atomic step.

Как уже упоминалось, операция является атомарной, поэтому всякий раз, когда выполняется запись, она будет добавляться к текущему смещению, соответствующему концу файла, а не смещению, сохраненному до завершения предыдущей операции записи.

Это заставляет работать добавление после операции усечения, снова записывая следующую строку журнала в начало файла без необходимости повторного открытия файла.

(Та же самая функция O _APPEND также позволяет нескольким модулям записи дополнять один и тот же файл, не затирая обновления друг друга.)

Регистраторы также записывают строку журнала, используя одну операцию записи (2 ), чтобы предотвратить разрыв строки журнала надвое во время операции усечения или параллельной записи.

Обратите внимание, что средствам ведения журнала, таким как syslog, syslog -ng или rsyslog, обычно не нужно использовать copytruncate, поскольку они поддерживают повторное открытие файлов журнала, обычно путем отправки им SIGHUP.поддержка logrotate для copytruncateсуществует для обслуживания других регистраторов, которые обычно добавляют к файлам журналов, но у которых не обязательно есть хороший способ повторно открыть файл журнала (, поэтому ротация путем переименования не работает в этих случаях.)

Также обратите внимание, что copyrotateимеет врожденное состояние гонки, в котором возможно, что модуль записи добавит строку в файл журнала сразу после того, как logrotate завершит копирование и до того, как он выполнит операцию усечения. Это состояние гонки привело бы к потере этих строк журнала навсегда. Поэтому ротация логов с помощью copytruncateобычно не рекомендуется, если только это не является единственно возможным способом.

9
27.01.2020, 20:54

Теги

Похожие вопросы