Определить файл закрыт - PullRequest
       8

Определить файл закрыт

2 голосов
/ 14 апреля 2010

Есть ли простой способ определить, когда файл для записи закрыт? У меня есть процесс, который выбивает новый файл каждые 5 секунд. Я не могу изменить код для этого процесса. Я пишу другой процесс для анализа содержимого каждого файла сразу после его создания. Есть ли простой способ просмотреть определенный каталог, чтобы увидеть, когда файл больше не открыт для записи? Я надеюсь на какую-нибудь команду Linux.

Ответы [ 5 ]

2 голосов
/ 14 апреля 2010

Вы можете положить что-то наверх, чтобы поднять ваши события.

попробовать:

strace ls 2>&1 | grep "close\|open"

Использование inotify также хорошая идея, но, вероятно, потребуется больше кода, чтобы получить то, что вам нужно.

2 голосов
/ 14 апреля 2010

Если вы знаете, что в файле есть какой-то конкретный текст (строка), который указывает на завершение записи, вы можете легко наблюдать за этим, используя команды типа grep

Кроме того, вы можете использовать команду fuser, чтобы узнать, используется ли файл.

2 голосов
/ 14 апреля 2010

Поскольку вы используете linux в качестве своей платформы, вы, возможно, захотите взглянуть на системные вызовы inotify. При мониторинге каталога, в котором записаны выходные файлы, вы получите события открытия / закрытия для файлов, созданных там.

Если вы хотите интегрировать это в скрипт оболочки, взгляните на inotifywait, который является частью inotify-tools.

1 голос
/ 15 апреля 2010

Если вам известен идентификатор процесса, который записывает файлы, вы можете посмотреть /proc/<pid>/fd/, чтобы увидеть, какие файлы открыты.

1 голос
/ 14 апреля 2010

Вы можете заблокировать содержимое вашего файла , пока не закончите его использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...