Файл удаляет по сравнению с перезаписью и ссылкой в/proc/pid/fd

В действительности, если Вы используете серверную версию каждого программного обеспечения, не большое различие. Они всю осень от того же дерева. когда Вы начинаете прибавлять x11 и настольные среды, которые они начинают изменять preformace мудрый. (реальные веб-серверы не должны иметь X11),

Red Hat имеет длинную уважаемую историю, я пошел бы с этим. Также имеет лучшая безопасность из поля (с коммерческой поддержкой? не знайте, где они стоят в эти дни),

Вы вытащили бы лучшую производительность из хинду, но мне потребовались 6 месяцев, чтобы узнать что чертовски блестящее проклятие дистрибутива.

2
18.10.2012, 03:59
2 ответа

Если процесс 1 уже начал читать файл перед процессом 2 перезаписи это, то он будет иметь некоторую часть содержания сохраненной в stdio буфер. После того как это пересекает границу размера буфера, это будет вынуждено перейти к ядру, и затем это найдет новое перезаписанное содержание.

2
27.01.2020, 22:01

Однако, если процесс 2 перезаписи, файл в противоположность удалению его (говорят с эхом "абракадабру"> file.txt), ссылке дескриптора файла в/proc / (обрабатывают 1 идентификатор)/fd сообщает о перезаписывающем материале ("абракадабра"), в то время как процесс 1 все еще может получить доступ к исходному содержанию исходный le.

Я не согласен:

$ echo original > /tmp/foo
$ tail -0f /tmp/foo &
[1] 20591
$ rm /tmp/foo
$ cat /proc/20591/fd/3
original
$ echo abracadabra > /tmp/foo
$ cat /proc/20591/fd/3
original

fd свяжитесь все еще показывает исходное содержание, вопреки тому, чего Вы требовали. Это с Linux 3.5. Вы видите что-то другое?

2
27.01.2020, 22:01
  • 1
    я вижу другое поведение. Отошлите отрывок, добавленный к исходному вопросу. –  iruvar 18.10.2012, 04:04
  • 2
    На самом деле Ваш отрывок выше, кажется, подтверждает мою точку зрения. Абракадабра, отображенная заключительной кошкой, отличается, чем исходное содержание. Однако эта та же процедура при выполнении на моей установке обеспечивает результаты, которые противоречат моей исходной точке. Исходный вопрос медленно принадлежал производственным процессам вовлечения ситуации под различными сессиями цикличное выполнение через большие файлы поэтому, буферизация stdio, ссылаемая aecolley, могла бы иметь некоторое отношение к нему. –  iruvar 18.10.2012, 04:21
  • 3
    Ой, Вы правы, я вручаю отредактированный, что расшифровка стенограммы и испортила самую важную часть! Я выполнил команды снова, и они соответствуют Вашему выводу; я зафиксирую отрывок. –  Jim Paris 18.10.2012, 09:00

Теги

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