4

Linuxではdd、ハードドライブ上のファイルをNautilusで削除できますが、ddがまだ進行中です。

Linux は R/W を保護するために必須のファイル ロックを適用できますか?

[編集] 元の質問は、Linux のファイル ロック機能に関するものではなく、Linux の想定されるバグに関するものでした。以下で回答されているようにここで再現し、他の人が同じ質問をする可能性があります。

Linux/Unix の方が優れた OS だと人々は言い続けます。現在、Linux で Java をコーディングしていて、簡単に再現できる問題に遭遇しました。ハード ドライブにファイルを追加し、DD がまだ進行中に Nautilus で削除できます。Linux が R/W を保護するために必須のファイル ロックを強制できないのはなぜですか??

4

3 に答える 3

16

-o mandLinux で強制ロックを行うには、オプションを使用してファイルシステムをマウントしg-x,g+s、ファイルにパーミッションを設定する必要があります。つまり、グループ実行を無効にし、setgid を有効にする必要があります。これが実行されると、ファイル記述子EAGAINの値に基づいて、すべてのアクセスがブロックまたはエラーになります。O_NONBLOCKただし、「既知のすべてのバージョンの Linux で強制ロックを実装すると、信頼性が低下する競合状態が発生する可能性があります。したがって、強制ロックに依存することはお勧めできません。」を参照してくださいfcntl(2)

于 2013-01-09T11:29:58.730 に答える
11

ロックする必要はありません。これはバグではなく選択です。あなたの仮定は間違っています。

ファイル システムは参照カウントを使用し、ファイルへのすべてのハード リンクが削除され、すべてのファイル記述子が閉じられた場合にのみ、ファイルを空きとしてマークします。

このアプローチにより、Windows などではできない安全なファイル システム操作が可能になります。使用中のファイルの削除、移動、名前変更などの操作は、ロックや破損を必要とせずに実行できます。

ddファイルの削除にもかかわらず、操作は成功しますが、実際には終了するまで延期されますdd

http://en.wikipedia.org/wiki/Reference_counting#Disk_operating_systems

[編集] 質問が他の誰かによって編集されたため、私の回答はあまり意味がありません。元の質問は、Linux の想定されるバグに関するものであり、Linux がファイルをロックできるかどうかに関するものではありません。

Linux/Unix の方が優れた OS だと人々は言い続けます。現在、Linux で Java をコーディングしていて、簡単に再現できる問題に遭遇しました。ハード ドライブにファイルを追加し、DD がまだ進行中に Nautilus で削除できます。Linux が R/W を保護するために必須のファイル ロックを強制できないのはなぜですか??

于 2012-08-21T20:45:29.703 に答える
1

Linux および Unix OS はファイル ロックを強制できますが、マルチユーザー設計のため、デフォルトではそうしません。flockおよびのマニュアル ページを読んでみてくださいfcntl。それはあなたを始めるかもしれません。

于 2012-08-21T20:31:27.650 に答える