web-dev-qa-db-ja.com

lsofはファイルを見逃します

Lsofが開いているファイルの一覧表示に失敗するのはなぜですか。たとえば、テキストエディタでホームディレクトリにあるファイルを開きます。

$ gedit ~/.python_history

lsofはrootとしても機能しません

$ Sudo lsof | grep python_history

何もリストされていません。どうして?

ファイルを編集して保存しても違いはありません。 pythonインタープリターを実行しても、違いはありません。

$ lsof | grep gedit

たくさんのファイルがリストされていますが、私が編集しているファイルはリストされていません。

3
sdgsrg

Geditはファイルをメモリに読み込み、ファイルハンドルを閉じます。通常:

open("/path/to/your/file", O_RDONLY|O_LARGEFILE|O_NOATIME) = 18
read(18, "blah blah blah"..., 4096) = 305
close(18)                           = 0

またはいくつかのmmapまたは他の方法。 (ファイルをどの程度正確に読み取るかはわかりませんが、重要なのは、ファイルを開いたままにしないことです。)

この後、変更されたかどうかを確認するためにポーリングを続けます。そして、書き込み時に再度開きます。

4
user367890