lsof-Frage

Software besorgen und anwenden
Post Reply
Message
Author
splish

lsof-Frage

#1 Post by splish »

Mich beschäftigt gerade folgendes:
In einem Terminal ( ssh) öffne ich eine Datei in einem Editor:

joe testdatei

...in einem anderen Terminal greppe ich die Ausgabe von lsof nach "testdatei" - das ergibt jedoch nix ausser das er zB die zugehörigen Bibliotheken zum joe-Prozess erkennt.

Heisst lsof nicht so etwas wie "list open files"?

User avatar
Janka
Posts: 3585
Joined: 11. Feb 2006 19:10

#2 Post by Janka »

Wer sagt denn, dass der Texteditor die "Testdatei" ständig offen halten muss? Teste nochmal mit einem

Code: Select all

$ cat >testdatei
Das *hält* die "testdatei" ständig offen und so wird das von lsof auch angezeigt.

Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

splish

#3 Post by splish »

Ah...ok. Da fehlt mir wohl noch ein bisschen Verständnis zum Dateikonzept unter Linux.
Ist eine Datei also für lsof nur dann "offen", wenn Sie grad als Datenstrom über Standard-Eingabe oder Ausgabe irgendwohin unterwegs ist?

Dann könnte lsof folglich auch nicht Dateien anzeigen, die ein User in einer Anwendung momentan geöffnet hat?

Aber lsof zeigt ja immerhin die Bibliotheken von joe an?!
Diese müssten doch genauso im Speicher sein, wie eine offene Datei in joe, oder nicht?

User avatar
hastifranki
Posts: 259
Joined: 06. May 2006 19:58

#4 Post by hastifranki »

Man müsste mal in den Quelltext von joe schauen. Dann hätte man Klarheit.

Für Programmierzwecke wäre das sicherlich nicht so gut, wenn ein Editor Dateien blockieren würde.

Viele Grüße
Frank

User avatar
Janka
Posts: 3585
Joined: 11. Feb 2006 19:10

#5 Post by Janka »

splish wrote:Ah...ok. Da fehlt mir wohl noch ein bisschen Verständnis zum Dateikonzept unter Linux. Ist eine Datei also für lsof nur dann "offen", wenn Sie grad als Datenstrom über Standard-Eingabe oder Ausgabe irgendwohin unterwegs ist?
Nein. Eine Datei ist dann offen, wenn ein Prozess ein Handle auf diese Datei hält. Das *kann* ein Prozess die ganze Zeit über tun, er *muss* aber nicht. Er kann auch genausogut die Datei einmal zu Anfang ins RAM einlesen und dann wieder schließen. Arbeiten tut er dann mit der Arbeitskopie im RAM.

Das ist nicht Linux-spezifisch, sondern offensichtlich spezifisch für "joe" (oder eine bestimmte Art, joe zu benutzen).
Dann könnte lsof folglich auch nicht Dateien anzeigen, die ein User in einer Anwendung momentan geöffnet hat?

Aber lsof zeigt ja immerhin die Bibliotheken von joe an?!
Diese müssten doch genauso im Speicher sein, wie eine offene Datei in joe, oder nicht?
lsof zeigt nicht an, wer was im Speicher hat. Wenn du das wissen willst, musst du das jeweilige Programm mit einem Debugger analysieren.

Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

splish

#6 Post by splish »

ahh....okay. Dann kann ich mir das quasi wie ein Filehandle beim Programmieren vorstellen. Dann hab ich es jetzt ungefähr kapiert, vielen Dank.

Post Reply