Nginx ログ ファイルの切り取りを行っているときに、奇妙な問題を発見しました。 Nginx ログ ファイルを別の場所に手動で移動する場合、構成ファイルをリロードしないと、Nginx は別のディレクトリに移動されたログ ファイルを書き込み続けます。 Nginxはログを書き込むときにファイルパスを使用しませんか? 移動した後もログ ファイルに書き込むことができるのはなぜですか?
欢迎选择我的课程,让我们一起见证您的进步~~
これはファイル システムの機能であり、変数のライフ サイクルを管理するプログラミング言語の参照カウントに似ています。ファイルを移動したり、ファイルを削除したりしても、ファイルがプロセスによって開かれている限り、ファイルには引き続きアクセスできます。ただし、ファイル名、ハード リンク、ファイル ハンドル (プログラムによって開かれなくなった) などのすべての「参照」が失われると、そのファイルへの次の参照が影響を受け、「ファイルが見つかりません」と表示されます。 。
その理由は、nginx がログ ファイルを開いた後、実際にはファイルを移動しても i ノード番号が変更されないため、ファイルの書き込みが継続されるためだと思います。
nginx は通常、高速化のためにファイルの i ノードをキャッシュします。
これはファイル システムの機能であり、変数のライフ サイクルを管理するプログラミング言語の参照カウントに似ています。ファイルを移動したり、ファイルを削除したりしても、ファイルがプロセスによって開かれている限り、ファイルには引き続きアクセスできます。ただし、ファイル名、ハード リンク、ファイル ハンドル (プログラムによって開かれなくなった) などのすべての「参照」が失われると、そのファイルへの次の参照が影響を受け、「ファイルが見つかりません」と表示されます。 。
その理由は、nginx がログ ファイルを開いた後、実際にはファイルを移動しても i ノード番号が変更されないため、ファイルの書き込みが継続されるためだと思います。
nginx は通常、高速化のためにファイルの i ノードをキャッシュします。