Page 1 of 1

lsof-Frage

Posted: 16. Jan 2013 23:27
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"?

Posted: 17. Jan 2013 10:04
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

Posted: 17. Jan 2013 17:40
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?

Posted: 17. Jan 2013 19:03
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

Posted: 18. Jan 2013 13:59
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

Posted: 19. Jan 2013 14:16
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.