ログファイルに常にイベントが追加されている場合、そのファイルを別のプロセスで読み取る(またはコピーする)のがどれだけ安全ですか?追加されているファイルの読み取り/コピーはどのくらい安全ですか?
答えて
UNIXでは、並行読み書きが可能です。他の人がファイルを追加している間は、ファイルを読むのは完全に安全です。
もちろん、読み取り行為がファイルの終わりに達している間に追加行為が未完了である場合、この読み取り者は不完全なバージョンを取得します(例:新しいログエントリの一部のみがファイル)。しかし、技術的には、このファイルは実際に読み取られている(例えば、コピーされている)状態であったので、が正しいである。
EDIT
それによりがあります。
ライタープロセスにオープンファイルハンドルがある場合、このプロセスがオープンファイルハンドルを保持している限り、ファイルはディスクに残ります。
ファイル(rm(1)
,unlink(2)
)を削除すると、そのファイルはそのディレクトリからのみ削除されます。それはディスク上にとどまり、ライター(およびオープンファイルハンドルを持つ他のすべての人)は、すでに削除されたファイルの内容を読み取ることができます。最後のプロセスがファイルハンドルを閉じると、ファイルの内容はディスク上で解放されます。
これは、プロセスがディスクをいっぱいにする大きなログファイルを書き込むと、問題になることがあります。ログファイルにファイルハンドルを保持して開いている場合、システム管理者はrm
を使用してこのディスク容量を解放することはできません。 典型的なアプローチは、プロセスを終了させることです。したがって、プロセスとして、ログに書き込んだ後にログファイルのファイルハンドルを閉じる(または少なくとも時々閉じると再オープンする)ことをお勧めします。
以上あります:
プロセスは、ログファイルのオープンファイルハンドルを持っている場合は、このファイルハンドル位置が含まれています。ログファイルが空になった場合(追加フラグを使用しない書き込みでは: > filepath
)、ファイルの内容は実際にディスクから削除されます(truncate(1)
、truncate(2)
、open(2)
)。開いているファイルハンドルを持つプロセスがこのファイルに書き込んでいる場合は、古い位置に書き込みます。 g。数メガバイトの位置にある。これを空のファイルにすると、空白がゼロで埋められます。
スパースファイルを作成できる場合(通常はUnixファイルシステムで可能です)、これは実際の問題ではありません。それ以外の場合は、ディスクをすぐにもう一度いっぱいにします。しかし、いずれにせよ、それは非常に混乱する可能性があります。
- 1. Djangoアプリからのシークレットファイルの書き込み/読み取りのソリューションはどれくらい安全ですか?
- 2. postgresqlのこのセキュリティメソッドはどれくらい安全ですか?
- 3. PHP - このハッシュはどれくらい安全ですか?
- 4. Androidアプリのキャッシュはどれくらい安全ですか?
- 5. `// domain.com /`(スキーマレス)のリンクはどれくらい安全ですか?
- 6. ブラウザのローカルストレージはどれくらい安全ですか?
- 7. 角度のルートガードはどれくらい安全ですか?
- 8. 暗号化されたファイルからの設定の追加/読み取り
- 9. オープンで安全なTCPチャネルはどのくらい安全ですか?
- 10. 流星 - それはどれくらい安全ですか?
- 11. iOS 8,9でNSUserDefaultsはどれくらい安全ですか?
- 12. iOS/Android用のAWS Mobile SDKに組み込まれているネットワークはどれくらい安全ですか?
- 13. 数値レシピで示されているシミュレーテッドアニーリングアルゴリズムはどれくらい安全か成熟していますか?
- 14. RequestFactoryで生成されたIDはどのくらい安全ですか?
- 15. Configファイルからの追加と読み取り
- 16. PHPはどれくらい安全ですか?
- 17. iOSデバイスIDはどれくらい安全ですか?
- 18. Parse PFUser.current()オブジェクトはどれくらい安全ですか?
- 19. ASP.NET Identity GenerateEmailConfirmationTokenはどれくらい安全ですか?
- 20. firebaseとauthはどれくらい安全ですか?
- 21. Application Supportフォルダはどれくらい安全ですか?
- 22. laravel 5.1はどれくらい安全ですか?
- 23. PHPセッション変数はどれくらい安全ですか?
- 24. htacces/htpasswdはどれくらい安全ですか?
- 25. Vagrant/Puppet/Puphpetはどれくらい安全ですか?
- 26. Weakreference get()メソッドはどれくらい安全ですか? (Android、asynctask)
- 27. javax.crypto.Cipherの安全性はどのくらいですか?
- 28. android StudioのWebサービスはどのくらい安全ですか?
- 29. 最後の反復でSSISで読み取られていないファイルのみを特定してコピーする
- 30. ディレクトリ内のすべてのJSONファイルを読み取り、Node.jsのCSVに追加してください。
詳細な対応をありがとうございます。オープンファイルはLinux ABIの一部ですか?そして、C/Pythonの 'open'メソッドによって抽象化されたものはありますか? – Greg
上記のオープンファイルハンドルの処理はUnixの一部であり、Linuxの一部でもあります。 C/Pythonでは 'open'によって抽象化されていません。 Pythonプロセスが(open()を使って作成された)オープンファイルハンドルを保持している場合、結果は説明された結果になります。実際には、ファイルを作成するための確立されたパターンです( 'open( '/ tmp/foo.tmp'、 'wb')')。そしてそれを一度にディスクから削除します( 'unlink( '/ tmp/foo.tmp ') ')を実行し、開いているハンドルを保持して、書き込みおよび読み取りを行う一時ファイルを作成し、プロセスが終了するとすぐにディスクから自動的に削除されます。 – Alfe