system management
1748183 メンバー
3422 オンライン
108759 解決策
新規ポスト

ファイルの排他

 
じゅん
新しいメンバー

ファイルの排他

下記のようなファイル排他を実現する方法ありますか?

※シェルスクリプトで実現したいと思っています。

--- 実現したいファイル排他 ---

1.ファイルのロック状態

 1-a.参照・書込みを許可する。

 1-b.書込みを許さない。(参照のみ可能)

 1-c.参照・書込みを許可しない。

 

 

2.ファイルの排他処理を行う過程

 

 パターン�

  2-1a.ユーザAが、ユーザ名"user"でログイン

  2-1b.ユーザBが、ユーザ名"user"でログイン

  2-2a.ユーザAが、ファイルAを(1-c)でロックする。

  2-2b.ユーザBが、ファイルAを(1-b)でロックしようとするが、

     既に(1-c)でロックされているので待機する。

  2-3a.ユーザAが、ファイルAに書込み処理を行う。

  2-3b.ユーザBは、待機。

  2-4a.ユーザAが、ファイルAを(1-c)から(1-b)でロックする。

  2-4b.ユーザBが、ファイルAを(1-b)でロックする。

  2-5a.ユーザAが、ファイルAの読込み処理を行う。

  2-5b.ユーザBが、ファイルAの読込み処理を行う。

  2-5a.ユーザAが、ファイルAを(1-a)に開放する。

  2-5b.ユーザBが、ファイルAを(1-a)に開放する。

 パターン�

  2-1a.ユーザAが、ユーザ名"user"でログイン

  2-1b.ユーザBが、ユーザ名"user"でログイン

  2-2a.ユーザAが、ファイルAを(1-b)でロックする。

  2-2b.ユーザBが、ファイルAを(1-c)でロックしようとするが、

     既に(1-b)でロックされているので待機する。

  2-3a.ユーザAが、ファイルAの読込み処理を行う。

  2-3b.ユーザBは、待機。

  2-4a.ユーザAが、ファイルAを(1-a)に開放する。

  2-4b.ユーザBが、ファイルAを(1-c)でロックする。

  2-5a.ユーザAは、処理終了。

  2-5b.ユーザBが、ファイルAに書込み処理を行う。

  2-5b.ユーザBが、ファイルAを(1-a)に開放する。

2件の返信2
hazelwood
信頼あるコントリビューター

ファイルの排他

パターン全部をよく読んでいませんが、シェルスクリプトで実現するのは難しいように思います。

シェルスクリプト内で、ファイルとのI/O、ロックを行いたいのだと思いますが、普通シェルスクリプト内でのファイルのI/Oってリダイレクトで実現しますよね。

そうすると、リダイレクトの都度、open/closeが発生するわけで、ファイルのロック状態を保持できないと思います。

(ロックするためのbuilt-in コマンドもなかったと思います。)

対象ファイルとは別にロック(を判断するための)ファイルを用意して、その有無で排他制御をするようなロジックにするしかないのではないでしょうか?

じゅん
新しいメンバー

ファイルの排他

hazelwood>>返信ありがとう御座います。

ロックファイル使用する方法は、自分も考えて

いました。

排他したいファイルが大量にある場合、

ファイルを大量に、作らなくてはならない。

タイミングによっては、ロックがうまく

できない。

色々調べてみたのですが、WindowsのNTFSで

使用されている、副次ストリームのような

機能って、無いのでしょうか?