Re: [PUG] Dateisystem überwachen
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
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
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
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
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
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
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
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
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
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