Re: [PUG] Dateisystem überwachen

2005-04-11 Diskussionsfäden Thomas Borger
 Das Beispiel von Sysinternals verwendet dafür (naja oder einfach nur für
 das GUI) scheinbar irgendwas aus den Kylix Bibliotheken.
 Leider habe die den Source nicht freigegeben, damit man sich das
 Prozedere mal anschauen kann.

wenn ich das richtig gelesen habe kannst du mit dem tool von sysinternal
aber nur auf 2.4er Kernel arbeiten?!
Du verwendest doch 2.6.5.

Gruss
Thomas

--

PUG - Penguin User Group Wiesbaden - http://www.pug.org


Re: [PUG] Dateisystem überwachen

2005-04-11 Diskussionsfäden Patrick Schulz
Ja, das stimmt wohl.

Allerdings geht es mir nicht um das Tool, sondern darum, dass es
scheinbar generell ohne irgendwelche speziellen Kernelmodule möglich
ist, das zu erreichen was ich will.

Ich habe eben etwas gefunden, das es gerade für die Java Entwicklung
recht interessant macht.

Das Produkt nennt sich JNIWrapper und ist über www.jniwrapper.com zu
beziehen. Da ist z.B. die FileSystemWatcher Klasse enthalten, alleridngs
nur für Win32 logischer Weise.

Genau die selbe Funktion will ich für LINUX!

Am allerliebsten auch gleich fertig als JNIWrapper!

Irgendwie muss das doch gehen. Sogar der Konqueror macht das ganze
scheinbar ohne besonderes Zutun.
Weiß jemand noch ein paar andere Lösungen?


--
Gruß
Partrick



Thomas Borger schrieb:
Das Beispiel von Sysinternals verwendet dafür (naja oder einfach nur für
das GUI) scheinbar irgendwas aus den Kylix Bibliotheken.
Leider habe die den Source nicht freigegeben, damit man sich das
Prozedere mal anschauen kann.
 
 
 wenn ich das richtig gelesen habe kannst du mit dem tool von sysinternal
 aber nur auf 2.4er Kernel arbeiten?!
 Du verwendest doch 2.6.5.
 
 Gruss
 Thomas
 

-- 

PUG - Penguin User Group Wiesbaden - http://www.pug.org


Re: [PUG] Dateisystem überwachen

2005-04-11 Diskussionsfäden Max Trense
Am Montag 11 April 2005 08:40 schrieb Patrick Schulz:
 Irgendwie muss das doch gehen. Sogar der Konqueror macht das ganze
 scheinbar ohne besonderes Zutun.
 Weiß jemand noch ein paar andere Lösungen?

Wie schon gesagt ;-) KDE verwendet FAM um das aktuelle Verzeichnis jeder 
Anwendung zu überwachen. Wenn Du das aktuelle Verzeichnis wechselst, dann 
kannst Du das ja auch manuell abfragen. Deswegen ist die FAM-Lösung, basiert 
glaube ich auf den Timestamps der beteiligten Inodes, auch vermutlich das 
geschickteste.
Auf Java wird sowas in absehbarer Zeit wohl nicht portiert ;-)

Das Feature sollte aber nicht allzu schwer zu simulieren sein. Zumindest unter 
Linux solltest Du Dich auf File.lastModified() verlassen können.

FileWatcher.java:

class FileWatcher implements Runnable {
  public FileWatcher(File f) {
watch = f;
  }
  public void run() {
while (! stop) {
  if (watch.lastModified()  lastModified) {
// notify listeners
  }
  Thread.sleep(100);
}
  }
  public void addFileChangeListener(FileChangeListener fcl) {
// add a listener
  }
  public void stopWatching() {
stop = true;
  }
  private File watch;
  private long lastModified;
  private boolean stop;
}

Entschuldige eventuelle Fehler ;-) Ich hab das gerade so aus dem Handgelenk 
programmiert. Die Klasse kannst Du auch ganz einfach erweitern, so dass sie 
mehrere Dateien überwacht.

Max



-- 
Max Trense -- [EMAIL PROTECTED] -- www.trense.info
--

PUG - Penguin User Group Wiesbaden - http://www.pug.org


Re: [PUG] Dateisystem überwachen

2005-04-11 Diskussionsfäden Patrick Schulz
Hi Max,

vielleicht sollte ich mal meine Anforderung noch ein wenig genauer
formulieren. Ich hatte in der ersten Mail etwas von der .net Klasse
FileSystemWatcher gesagt. Diese ist in der Lage ganze Verzeichnisbäume
zu überwachen und entsprechende Änderungen in einem gewatchten ;-)
Verzeichnis oder dessen Unterverzeichnisse zu registrieren (File Filter,
Events Typen und so weiter können zuvor auch festgelegt werden).

Das selbige möchte ich nun auch für Linux und das dann in Java verwenden.
FAM registriert nur Änderungen in einem Verzeichnis bzw. File.

Die Java Klasse ist zwar nicht verkehrt, aber nicht genau das was ich
gerne hätte, da ich mich dann um den Status eines jeden Files selbst zu
kümmern hätte. Das möchte ich aber gerne dem OS überlassen und nur auf
entsprechnde Events des OS reagieren oder so...

Eine Sache die ich gefunden habe ist das Commons VFS aus dem Jakarta
Commons Project. http://jakarta.apache.org/commons/sandbox/vfs/index.html

Das scheint sowas zu können, muss ich aber noch genauer unter die Lupe
nehmen.


Gruß
Patrick


Max Trense schrieb:
 Am Montag 11 April 2005 08:40 schrieb Patrick Schulz:
 
Irgendwie muss das doch gehen. Sogar der Konqueror macht das ganze
scheinbar ohne besonderes Zutun.
Weiß jemand noch ein paar andere Lösungen?
 
 
 Wie schon gesagt ;-) KDE verwendet FAM um das aktuelle Verzeichnis jeder 
 Anwendung zu überwachen. Wenn Du das aktuelle Verzeichnis wechselst, dann 
 kannst Du das ja auch manuell abfragen. Deswegen ist die FAM-Lösung, basiert 
 glaube ich auf den Timestamps der beteiligten Inodes, auch vermutlich das 
 geschickteste.
 Auf Java wird sowas in absehbarer Zeit wohl nicht portiert ;-)
 
 Das Feature sollte aber nicht allzu schwer zu simulieren sein. Zumindest 
 unter 
 Linux solltest Du Dich auf File.lastModified() verlassen können.
 
 FileWatcher.java:
 
 class FileWatcher implements Runnable {
   public FileWatcher(File f) {
 watch = f;
   }
   public void run() {
 while (! stop) {
   if (watch.lastModified()  lastModified) {
 // notify listeners
   }
   Thread.sleep(100);
 }
   }
   public void addFileChangeListener(FileChangeListener fcl) {
 // add a listener
   }
   public void stopWatching() {
 stop = true;
   }
   private File watch;
   private long lastModified;
   private boolean stop;
 }
 
 Entschuldige eventuelle Fehler ;-) Ich hab das gerade so aus dem Handgelenk 
 programmiert. Die Klasse kannst Du auch ganz einfach erweitern, so dass sie 
 mehrere Dateien überwacht.
 
 Max
 
 
 

-- 

PUG - Penguin User Group Wiesbaden - http://www.pug.org


Re: [PUG] Dateisystem überwachen

2005-04-11 Diskussionsfäden Max Trense
Am Montag 11 April 2005 10:58 schrieb Patrick Schulz:
 vielleicht sollte ich mal meine Anforderung noch ein wenig genauer
 formulieren. Ich hatte in der ersten Mail etwas von der .net Klasse
 FileSystemWatcher gesagt. Diese ist in der Lage ganze Verzeichnisbäume
 zu überwachen und entsprechende Änderungen in einem gewatchten ;-)
 Verzeichnis oder dessen Unterverzeichnisse zu registrieren (File Filter,
 Events Typen und so weiter können zuvor auch festgelegt werden).

Das nimmt Dir aber doch jede Freiheit, die Dir die Java-Plattform bietet. Was 
soll diese Bibliothek zum Beispiel mit Softlinks machen, deren Ziel geändert 
wurde? Oder mit Pipes? Device-Files?

Alles was Du IMHO wissen musst, ist ob sich irgendetwas _unterhalb_ des 
überwachten Verzeichnisses geändert hat. Darauf zu reagieren ist ganz 
eindeutig Sache Deines Programmes.

 Das selbige möchte ich nun auch für Linux und das dann in Java verwenden.
 FAM registriert nur Änderungen in einem Verzeichnis bzw. File.

 Die Java Klasse ist zwar nicht verkehrt, aber nicht genau das was ich
 gerne hätte, da ich mich dann um den Status eines jeden Files selbst zu
 kümmern hätte. Das möchte ich aber gerne dem OS überlassen und nur auf
 entsprechnde Events des OS reagieren oder so...

 Eine Sache die ich gefunden habe ist das Commons VFS aus dem Jakarta
 Commons Project. http://jakarta.apache.org/commons/sandbox/vfs/index.html

Die machen das auch nicht anders. Ausser das hier das VFS-Konzept dem ganzen 
auch noch einen großzügigen Unterbau verschafft.

Max


-- 
Max Trense -- [EMAIL PROTECTED] -- www.trense.info
--

PUG - Penguin User Group Wiesbaden - http://www.pug.org


Re: [PUG] Dateisystem überwachen

2005-04-11 Diskussionsfäden Patrick Schulz

Max Trense schrieb:
 Am Montag 11 April 2005 10:58 schrieb Patrick Schulz:
 
vielleicht sollte ich mal meine Anforderung noch ein wenig genauer
formulieren. Ich hatte in der ersten Mail etwas von der .net Klasse
FileSystemWatcher gesagt. Diese ist in der Lage ganze Verzeichnisbäume
zu überwachen und entsprechende Änderungen in einem gewatchten ;-)
Verzeichnis oder dessen Unterverzeichnisse zu registrieren (File Filter,
Events Typen und so weiter können zuvor auch festgelegt werden).
 
 
 Das nimmt Dir aber doch jede Freiheit, die Dir die Java-Plattform bietet. Was 
 soll diese Bibliothek zum Beispiel mit Softlinks machen, deren Ziel geändert 
 wurde? Oder mit Pipes? Device-Files?
 

So tief sollte das ganze nicht gehen.
Es interessiert mich z.B. eher ob eine Datei/ein Verzeichnis
hinzugefügt, gelöscht oder verändert wurde. Softlinks, Pipes und
Devicefiles interessieren mich absolut nicht.

Und welche Freiheit sollte mir das nehmen?


 Alles was Du IMHO wissen musst, ist ob sich irgendetwas _unterhalb_ des 
 überwachten Verzeichnisses geändert hat. Darauf zu reagieren ist ganz 
 eindeutig Sache Deines Programmes.
 

Korrekt! Ich möchte z.B. sobald irgendwo eine Datei neu erstellt wurde
und nicht mehr blockiert irgendeine Funktion in Java aufrufen.
Das ist absolut die Sache meines Programms.

 
Das selbige möchte ich nun auch für Linux und das dann in Java verwenden.
FAM registriert nur Änderungen in einem Verzeichnis bzw. File.

Die Java Klasse ist zwar nicht verkehrt, aber nicht genau das was ich
gerne hätte, da ich mich dann um den Status eines jeden Files selbst zu
kümmern hätte. Das möchte ich aber gerne dem OS überlassen und nur auf
entsprechnde Events des OS reagieren oder so...

Eine Sache die ich gefunden habe ist das Commons VFS aus dem Jakarta
Commons Project. http://jakarta.apache.org/commons/sandbox/vfs/index.html
 
 
 Die machen das auch nicht anders. Ausser das hier das VFS-Konzept dem ganzen 
 auch noch einen großzügigen Unterbau verschafft.
 
 Max
 
 

In wie fern machen die was nicht anders (kann es sein, dass wir ggf.
beide das selbe meinen, aber aneinander vorbei reden ?!? ) oder wie oder
was?

Bahnhof...

Patrick

-- 

PUG - Penguin User Group Wiesbaden - http://www.pug.org


Re: [PUG] Dateisystem überwachen

2005-04-10 Diskussionsfäden Patrick Schulz
Danke für die Tipps!
Im Moment scheint mir Dazuko so mit das beste zu sein, da es auch
Unterverzeichnisse überwachen kann.
FAM überwacht nur ein aktuelles Verzeichnis.

Was mir allerdings aufgefallen ist, ist dass unter SuSE 9.1 z.B. die KDE
bzw. Konqueror ebenfalls bemerkt, dass sich etwas in Verzeichnissen
geändert hat.

Es scheint also im Standard Kernel 2.6.5 schon eine entsprechende
Möglichkeit zu geben, Filesystem Änderungungen zu registrieren.

Ich suche daher eher nach einer Möglichkeit diese Features zu nutzen,
als dafür irgendwelche speziellen Kernel Module zu verwenden.

Das Beispiel von Sysinternals verwendet dafür (naja oder einfach nur für
das GUI) scheinbar irgendwas aus den Kylix Bibliotheken.
Leider habe die den Source nicht freigegeben, damit man sich das
Prozedere mal anschauen kann.

Also es sollte nach Möglichkeit mit einfachen, vorhandenen Boardmitteln
möglich sein.


--
Gruß
Patrick


Max Trense schrieb:
 Am Freitag 08 April 2005 18:12 schrieb Tobias Kaefer:
 
Patrick Schulz schrieb:

Hallo Liste,

hat irgendwer von Euch schon mal das gleiche Problem gehabt, Zugriffe
auf das Linux Dateisystem überwachen zu wollen?
Also z.B. Datei wird geöffnet (lesend, schreibend, exclusiv), Datei wird
verändert, verschoben, kopiert usw...

...

Kann mir irgendwer einen Anhaltspunkt geben oder hat jemand sowas schon
entwickelt? Bitte gebt mir Infos.

Es gibt ein Kernel-Patch der Dir ein Modul zur Überwachung zur Verfügung
stellt.
http://www.dazuko.org/
 
 
 Dazuko ist vielleicht etwas oversized. Schau Dir mal das Paket FAM [1] (File 
 Alteration Monitor) an. Das tut so ungefähr das, was Du haben möchtest.
 
 
 Max
 
 
 [1] http://oss.sgi.com/projects/fam/
 
 

-- 

PUG - Penguin User Group Wiesbaden - http://www.pug.org


[PUG] Dateisystem überwachen

2005-04-08 Diskussionsfäden Patrick Schulz
Hallo Liste,

hat irgendwer von Euch schon mal das gleiche Problem gehabt, Zugriffe
auf das Linux Dateisystem überwachen zu wollen?
Also z.B. Datei wird geöffnet (lesend, schreibend, exclusiv), Datei wird
verändert, verschoben, kopiert usw...

Da gibt es ein Tool Filemon (bekannt aus der Windows Welt) von
sysinternals.com, das auch jetzt für Linux verfügbar ist.

Mich würde diese Technik interessieren, die die dort eingesetzt haben,
da ich es für eigene Programme einsetzen wollen würde.

Unter M$'s .net Platform gibt es eine FileSystemWatcher Klasse, die im
Endeffekt einen ähnlichen Dienst erfüllt.

Sowas hätte ich gerne für Linux - egal wie und in welcher Sprache...
Obwohl mir das gleich als C++ / JNI Library am besten gefallen würde, um
das direkt in Java zu verwenden. :-)

Kann mir irgendwer einen Anhaltspunkt geben oder hat jemand sowas schon
entwickelt? Bitte gebt mir Infos.


Besten Dank
Patrick


-- 

PUG - Penguin User Group Wiesbaden - http://www.pug.org


Re: [PUG] Dateisystem überwachen

2005-04-08 Diskussionsfäden Tobias Kaefer
Patrick Schulz schrieb:

Hallo Liste,

hat irgendwer von Euch schon mal das gleiche Problem gehabt, Zugriffe
auf das Linux Dateisystem überwachen zu wollen?
Also z.B. Datei wird geöffnet (lesend, schreibend, exclusiv), Datei wird
verändert, verschoben, kopiert usw...

...

Kann mir irgendwer einen Anhaltspunkt geben oder hat jemand sowas schon
entwickelt? Bitte gebt mir Infos.

  

Es gibt ein Kernel-Patch der Dir ein Modul zur Überwachung zur Verfügung
stellt.
http://www.dazuko.org/

Gruss
Tobi
-- 

PUG - Penguin User Group Wiesbaden - http://www.pug.org


Re: [PUG] Dateisystem überwachen

2005-04-08 Diskussionsfäden Max Trense
Am Freitag 08 April 2005 18:12 schrieb Tobias Kaefer:
 Patrick Schulz schrieb:
 Hallo Liste,
 
 hat irgendwer von Euch schon mal das gleiche Problem gehabt, Zugriffe
 auf das Linux Dateisystem überwachen zu wollen?
 Also z.B. Datei wird geöffnet (lesend, schreibend, exclusiv), Datei wird
 verändert, verschoben, kopiert usw...
 
 ...
 
 Kann mir irgendwer einen Anhaltspunkt geben oder hat jemand sowas schon
 entwickelt? Bitte gebt mir Infos.

 Es gibt ein Kernel-Patch der Dir ein Modul zur Überwachung zur Verfügung
 stellt.
 http://www.dazuko.org/

Dazuko ist vielleicht etwas oversized. Schau Dir mal das Paket FAM [1] (File 
Alteration Monitor) an. Das tut so ungefähr das, was Du haben möchtest.


Max


[1] http://oss.sgi.com/projects/fam/


-- 
Max Trense -- [EMAIL PROTECTED]
--

PUG - Penguin User Group Wiesbaden - http://www.pug.org