Несколько компьютеров могут одновременно добавить в файл на доле файла окон?

Если Вы просто входите at без любых параметров это покажет запланированные задачи.

Кроме того, обычно необходимо получить подсказку "Добавленный новое задание с идентификатором задания = x".

2
задан 24 May 2013 в 02:37
3 ответа

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

Однако вы усложняете ситуацию, когда говорите о доступе к файлу в сетевой папке. Теперь мы получаем доступ к файлам по сетевому протоколу SMB.

SMB использует oplocks (гибкие блокировки) и аренду для управления одновременным доступом к файлам. Типы оппозиционных блокировок и аренды следующие:

Неисправные блокировки

  • Уровень 1, монопольный доступ Эта блокировка позволяет клиенту открывать файл для монопольного доступа. Клиент может выполнять буферизацию с упреждающим чтением и кэширование чтения или записи.
  • Уровень 2, общий доступ Эта блокировка позволяет нескольким одновременным читателям файла и запретить запись. Клиент может выполнять буферизацию с упреждающим чтением и кэширование чтения данных и атрибутов файла. Запись в файл приведет к тому, что держатели блокировки будут уведомлены о том, что блокировка была нарушена.
  • Пакетный, монопольный доступ Эта блокировка берет свое имя от блокировки, используемой при обработке пакетных (.bat) файлов, которые открываются и закрываются для обработки каждой строки в файле. Клиент может оставить файл открытым на сервере, даже если приложение (возможно, временно) закрыло файл. Эта блокировка поддерживает чтение, запись и кэширование дескрипторов.
  • Filter, монопольный доступ Эта блокировка предоставляет приложениям и фильтрам файловой системы механизм для снятия блокировки, когда другие клиенты пытаются получить доступ к тому же файлу, но в отличие от блокировки уровня 2, файл не может быть открыт для доступа на удаление, а другой клиент не получит сообщение о нарушении доступа. Эта блокировка поддерживает кэширование чтения и записи.

Аренда

  • Чтение (R), общий доступ Позволяет нескольким одновременным читателям файла и не писать. Эта аренда позволяет клиенту выполнять буферизацию с упреждающим чтением и кэширование чтения.
  • Дескриптор чтения (RH), совместный доступ Это похоже на блокировку уровня 2, с дополнительным преимуществом, позволяющим клиенту держать файл открытым на сервере, даже если средство доступа на клиенте закрыло файл. (Диспетчер кеша будет лениво сбрасывать незаписанные данные и очищать неизмененные страницы кэша в зависимости от доступности памяти.) Это превосходит оппозиционную блокировку уровня 2, поскольку нет необходимости прерывать аренду между открытием и закрытием дескриптора файла. (В этом отношении он обеспечивает семантику, аналогичную пакетной оппортунистической блокировке.) Этот тип аренды особенно полезен для файлов, которые многократно открываются и закрываются, поскольку кеш не становится недействительным, когда файл закрывается, и повторно заполняется, когда файл открывается снова, обеспечение значительного повышения производительности для сложных приложений с интенсивным вводом-выводом.
  • Чтение-запись (RW), монопольный доступ Эта аренда позволяет клиенту открывать файл для монопольного доступа. Эта блокировка позволяет клиенту выполнять буферизацию с упреждающим чтением и кэширование чтения или записи.
  • Read-Write-Handle (RWH), монопольный доступ Эта блокировка позволяет клиенту открывать файл для монопольного доступа. Эта аренда поддерживает кэширование чтения, записи и обработки (аналогично аренде Read-Handle).

Внутреннее устройство Windows 6-е изд., Марк Руссинович и др.

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

Измените свою стратегию. Как сказал MDMarra, журнал событий Windows - лучший выбор. Другая идея состоит в том, чтобы все клиенты записывали в свои собственные файлы в общей папке, а затем серверный процесс собирал все файлы и объединял их. Вы упоминаете в своем вопросе, что пишете код, поэтому вы можете изменить способ работы этого приложения. Я бы посоветовал зайти в StackOverflow и спросить их, как лучше всего использовать общий доступ для записи к одному файлу по сети.

Эта аренда поддерживает кэширование чтения, записи и обработки (аналогично аренде Read-Handle).

Внутреннее устройство Windows 6-е изд., Марк Руссинович и др.

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

Измените свою стратегию. Как сказал MDMarra, журнал событий Windows - лучший выбор. Другая идея состоит в том, чтобы все клиенты записывали в свои собственные файлы в общей папке, а затем серверный процесс собирал все файлы и объединял их. Вы упоминаете в своем вопросе, что пишете код, поэтому вы можете изменить способ работы этого приложения. Я бы посоветовал зайти в StackOverflow и спросить их, как лучше всего использовать общий доступ для записи к одному файлу по сети.

Эта аренда поддерживает кэширование чтения, записи и обработки (аналогично аренде Read-Handle).

Внутреннее устройство Windows 6-е изд., Марк Руссинович и др.

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

Измените свою стратегию. Как сказал MDMarra, журнал событий Windows - лучший выбор. Другая идея состоит в том, чтобы все клиенты записывали в свои собственные файлы в общей папке, а затем серверный процесс собирал все файлы и объединял их. Вы упоминаете в своем вопросе, что пишете код, поэтому вы можете изменить способ работы этого приложения. Я бы посоветовал зайти в StackOverflow и спросить их, как лучше всего использовать общий доступ для записи к одному файлу по сети.

Марк Руссинович и др.

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

Измените свою стратегию. Как сказал MDMarra, журнал событий Windows - лучший выбор. Другая идея состоит в том, чтобы все клиенты записывали в свои собственные файлы в общей папке, а затем серверный процесс собирал все файлы и объединял их. Вы упоминаете в своем вопросе, что пишете код, поэтому вы можете изменить способ работы этого приложения. Я бы посоветовал зайти в StackOverflow и спросить их, как лучше всего использовать общий доступ для записи к одному файлу по сети.

Марк Руссинович и др.

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

Измените свою стратегию. Как сказал MDMarra, журнал событий Windows - лучший выбор. Другая идея состоит в том, чтобы все клиенты записывали в свои собственные файлы в общей папке, а затем серверный процесс собирал все файлы и объединял их. Вы упоминаете в своем вопросе, что пишете код, поэтому вы можете изменить способ работы этого приложения. Я бы посоветовал зайти в StackOverflow и спросить их, как лучше всего использовать общий доступ для записи к одному файлу по сети.

Другая идея состоит в том, чтобы все клиенты записывали в свои собственные файлы в общей папке, а затем серверный процесс собирал все файлы и объединял их. Вы упоминаете в своем вопросе, что пишете код, поэтому вы можете изменить способ работы этого приложения. Я бы посоветовал зайти в StackOverflow и спросить их, как лучше всего использовать общий доступ для записи к одному файлу по сети.

Другая идея состоит в том, чтобы все клиенты записывали в свои собственные файлы в общей папке, а затем серверный процесс собирал все файлы и объединял их. Вы упоминаете в своем вопросе, что пишете код, поэтому вы можете изменить способ работы этого приложения. Я бы посоветовал зайти в StackOverflow и спросить их, как лучше всего использовать общий доступ для записи к одному файлу по сети.

5
ответ дан 3 December 2019 в 08:46

Нет. Когда файл открывается для записи, он блокируется. Другие попытки записи в заблокированном состоянии приведут к «Доступ запрещен»

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

3
ответ дан 3 December 2019 в 08:46

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

.
1
ответ дан 3 December 2019 в 08:46

Теги

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