lsof 不足しているファイル

lsof 不足しているファイル

lsofが開かれたファイルをリストできないのはなぜですか?たとえば、テキストエディタを使用してホームディレクトリにあるファイルを開きます。

$ gedit ~/.python_history

lsofルートとしても機能しません

$ sudo lsof | grep python_history

何もリストされていません。なぜ?

ファイルの編集と保存に違いはありません。 Pythonインタプリタを実行しても違いはありません。

$ lsof | grep gedit

複数のファイルが一覧表示されますが、編集中のファイルは一覧表示されません。

答え1

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

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

それともmmapや他の方法です。 (正確にファイルを読み取る方法はわかりませんが、ポイントはファイルを開いたままにしないことです。)

その後、変更されたことを確認するためにポーリングを続けます。書き込み中にもう一度開いてみてください。

関連情報