Lsofが開いているファイルの一覧表示に失敗するのはなぜですか。たとえば、テキストエディタでホームディレクトリにあるファイルを開きます。
$ gedit ~/.python_history
lsof
はrootとしても機能しません
$ Sudo lsof | grep python_history
何もリストされていません。どうして?
ファイルを編集して保存しても違いはありません。 pythonインタープリターを実行しても、違いはありません。
$ lsof | grep gedit
たくさんのファイルがリストされていますが、私が編集しているファイルはリストされていません。
Geditはファイルをメモリに読み込み、ファイルハンドルを閉じます。通常:
open("/path/to/your/file", O_RDONLY|O_LARGEFILE|O_NOATIME) = 18
read(18, "blah blah blah"..., 4096) = 305
close(18) = 0
またはいくつかのmmapまたは他の方法。 (ファイルをどの程度正確に読み取るかはわかりませんが、重要なのは、ファイルを開いたままにしないことです。)
この後、変更されたかどうかを確認するためにポーリングを続けます。そして、書き込み時に再度開きます。