Dennis: Dateien automatisch umbennen

Beitrag lesen

Hi Vinzenz,

Ich hatte im Kopf, dass es unter Linux entsprechende Hooks im Kernel gibt, mit denen du dich über Änderungen im Dateisystem informieren lassen kannst. Nach einer kurzen Recherche bin ich auf Inotify gestoßen und habe u.a. auch noch diesen Artikel dazu gefunden.

Danke für die Infos. Wieder etwas dazugelernt. Ich weiß zwar immer noch nicht, warum man so etwas wirklich haben möchte, die positiven Blogkommentare haben mich nicht überzeugen können. "Ende der Vernunft" passt da richtig ;-)

Nun ja, stell dir mal vor, du hast 10 Applikationen, welche unabhängig voneinander laufen und welche alle etwas machen wollen, wenn in einem bestimmten Verzeichnis eine neue Datei angelegt wird. Nutzt du dafür herkömmliche Methoden, wie du sie erwähnst, also Verzeichnis regelmäßig öffnen, Einträge einlesen und mit einer Liste der Einträgen vom letzten Auslesen vergleichen, dann ist das meines Erachtens nicht gerade förderlich für die Performance.

Wenn jetzt auch noch jede dieser Applikationen nicht mit einer Verzögerung von 1 Minute leben kann, sondern das Verzeichnis jede Sekunde auslesen will, dann hast du auf deinem Server in jeder Sekunde die gleiche stupide Aktion 10 mal ausgeführt, wobei doch einmal reichen würde. Außerdem erwähnte ich ja bereits, dass du irgendwie im Speicher ein Abbild haben musst, wie das Verzeichnis beim letzten Einlesen aussah, denn sonst kannst du ja nicht feststellen, ob eine Datei gerade erstellt worden ist oder nicht. Auch wenn das wohl eher nur marginal ist, aber mehr Arbeitsspeicher wird also auch noch benötigt, obwohl letztlich überall nur dasselbe drin steht. ;-)

Hingegen sehe ich da inotify klar im Vorteil, ich habe mir das jetzt vermutlich auch nicht genauer angeguckt als du es wahrscheinlich hast *g* aber dieses Ding scheint mir ja als Kernelmodul implementiert zu sein. Somit muss dieses Programm eben nicht regelmäßig das überwachte Verzeichnis auslesen, sondern hängt sich einfach in z.B. die Prozedur des Datei-Anlegens im Kernel ein. Sprich der Kernel legt eine Datei an (weil irgendwo der Befehl dazu gegeben wurde) und löst dann gleichzeitig noch das inotify Event aus. Ergo hast du keine Rechenleistung verschwendet, ohne das etwas passiert und du hast auch keine Abbilder der Verzeichnisse im Speicher.

Viele Grüße,
  ~ Dennis.