問題タブ [flock]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
flock - システムの再起動後に群れロックはリセットされますか?
停電が原因で、システムの電源が突然切れたとします。
システムの起動時に、群れのロックは常に「ロック解除」されていると見なされますか?
Linux では、flock は fcntl(...) (ファイル記述子) に依存しています。
別の質問:flock -u <lock_filename>
システムの最初の起動時に手動で呼び出す必要はありませんか? (つまり、cron @reboot から)?
更新:
BSD群れのマニュアルページには次のように書かれています:
php - json ファイルが破損する原因は何ですか?
単語の頻度をカウントし、結果を json ファイルに保存するスクリプトがあります。再度実行すると、既存の json ファイルが読み取られ、結果が結合されてから、json ファイルが再書き込みされます。これはリクエスト内で繰り返し発生する可能性があり、多くの同時リクエストが存在する可能性があるため、以前flock()
はエラーを防止しようとしていました. 昨日しばらく実行して良好なデータを取得しましたが、今朝確認したところファイルが破損していました。(テキスト ファイルは問題ありませんが、json が壊れていました。)
私のコードの関連部分は次のとおりです。
しばらくは機能しますが、最終的に悪いjsonを書き込むので、ファイルのロックの問題なのか、json_encodeが悪いデータを返す問題があるのか わかりません...?
php - LOCK_SH はどのように機能しますか?
私は PHP で群れのメカニズムを勉強していますが、LOCK_SH モードの機能を理解するのに苦労しています。他のスクリプトが書き込みできないようにファイルをロックしているサイトを読みましたが、読み取りは可能です。ただし、次のコードは期待どおりに機能していないようです:
そしてfile2.phpに私は持っています
ファイルを 20 秒間ロックする最初のスクリプトを実行します。ロックが設定された状態で file2.php を実行すると、すぐに実行が終了します。その後、「my_file.txt」を開くと、文字列「test」が追加されました (「file1.php」はまだ実行されていました)。「file2.php」を変更して、ロックされたファイルから読み取り、問題なく赤くなるようにします。どうやら...「LOCK_SH」の縫い目はまったく何もしません。ただし、LOCK_EX yes を使用すると、ファイルがロックされ、スクリプトはファイルから読み書きできなくなります。Easy PHP を使用しており、Windows 7 で実行しています。
php - ファイルがロックされているかどうかをテストする
PHP で、ファイルが既にロックされているかどうかをテストするにはどうすればよいflock
ですか? たとえば、別の実行中のスクリプトが次を呼び出した場合:
linux - Linux flock(fd, LOCK_EX|LOCK_NB) は誤って失敗する可能性がありますか?
2 つのプロセスが を使用してファイルに排他ロックを同時に設定しようとする状況を考えてみましょうflock(fd, LOCK_EX|LOCK_NB)
。
示されているように、試行は非ブロッキングであるため、2 つのプロセスのうちの 1 つが で失敗するはずEWOULDBLOCK
です。
ここに私の質問があります: (Linux) の実装は、flock()
そのような場合に 2 つのプロセスのうちの 1 つだけが成功することを保証しますか? EWOULDBLOCK
または、他の誰も干渉していない場合でも、両方が失敗する可能性はありますか?
要するに、?flock(fd, LOCK_EX|LOCK_NB)
で誤って失敗することはありません。EWOULDBLOCK
私は主にflock()
Linux が提供するのバージョンに関心がありflock()
ますが、OS X などの他のシステムに関する情報も大歓迎です。
また、ロックが排他的 ( LOCK_EX
) であろうと共有 ( LOCK_SH
) であろうと、答えは同じだと思います。そうでない場合は、お知らせください。
bash - 200>"$somefile" は何を達成しますか?
有望に見える定型flock(1)
コードを見つけました。盲目的に使用する前に、コンポーネントを理解したいと思います。
これらの関数は 3 番目の形式を使用しているようですflock
群れ [-sxun] [-w タイムアウト] fd
3 番目の形式はシェル スクリプト内で便利で、通常は次のように使用されます。
私が迷っている部分(サンプルラッパー関数から)は、この表記法です
flock
またはマンページからの略記
それは何を達成しますか?
flock
最初のリダイレクトの値以外の値を渡す後続のコマンドflock
が不平を言うことに気付きました
flock
どのファイルを操作するかを知るために、ファイル記述子をマップとして使用しているようです。ただし、それが機能するためには、それらの記述子がまだ存在し、ファイルに関連付けられている必要がありますよね?
リダイレクトが完了し、ロック ファイルが作成された後、ファイルは閉じられ、開いているファイルに関連付けられたファイル記述子は気化されませんか? ファイル記述子は開いているファイルにのみ関連付けられていると思いました。
何が起きてる?