File Events

FileWatching.poll_fdFunction
poll_fd(fd, timeout_s::Real=-1; readable=false, writable=false)

Überwacht einen Dateideskriptor fd auf Änderungen der Lese- oder Schreibverfügbarkeit, mit einem Timeout, das durch timeout_s Sekunden gegeben ist.

Die Schlüsselwortargumente bestimmen, welcher Lese- und/oder Schreibstatus überwacht werden soll; mindestens eines von ihnen muss auf true gesetzt sein.

Der zurückgegebene Wert ist ein Objekt mit den booleschen Feldern readable, writable und timedout, die das Ergebnis des Pollings angeben.

source
FileWatching.poll_fileFunction
poll_file(path::AbstractString, interval_s::Real=5.007, timeout_s::Real=-1) -> (previous::StatStruct, current)

Überwachen Sie eine Datei auf Änderungen, indem Sie alle interval_s Sekunden abfragen, bis eine Änderung auftritt oder timeout_s Sekunden vergangen sind. Der interval_s sollte eine lange Periode sein; der Standardwert beträgt 5,007 Sekunden.

Gibt ein Paar von Statusobjekten (previous, current) zurück, wenn eine Änderung erkannt wird. Der previous Status ist immer ein StatStruct, kann jedoch alle Felder auf null gesetzt haben (was darauf hinweist, dass die Datei zuvor nicht existierte oder nicht zugänglich war).

Das current Statusobjekt kann ein StatStruct, ein EOFError (was darauf hinweist, dass die Zeitüberschreitung abgelaufen ist) oder eine andere Unterklasse von Exception sein (wenn der stat-Vorgang fehlgeschlagen ist - zum Beispiel, wenn der Pfad nicht existiert).

Um festzustellen, wann eine Datei geändert wurde, vergleichen Sie current isa StatStruct && mtime(prev) != mtime(current), um eine Benachrichtigung über Änderungen zu erkennen. Es wird jedoch empfohlen, watch_file für diesen Vorgang zu verwenden, da es zuverlässiger und effizienter ist, obwohl es in einigen Situationen möglicherweise nicht verfügbar ist.

source
FileWatching.watch_fileFunction
watch_file(path::AbstractString, timeout_s::Real=-1)

Überwacht die Datei oder das Verzeichnis path auf Änderungen, bis eine Änderung auftritt oder timeout_s Sekunden vergangen sind. Diese Funktion pollt das Dateisystem nicht, sondern verwendet plattformspezifische Funktionen, um Benachrichtigungen vom Betriebssystem zu erhalten (z. B. über inotify unter Linux). Siehe die unten verlinkte NodeJS-Dokumentation für Details.

Der zurückgegebene Wert ist ein Objekt mit den booleschen Feldern renamed, changed und timedout, die das Ergebnis der Überwachung der Datei angeben.

Dieses Verhalten dieser Funktion variiert leicht zwischen den Plattformen. Siehe https://nodejs.org/api/fs.html#fs_caveats für detailliertere Informationen.

source
FileWatching.watch_folderFunction
watch_folder(path::AbstractString, timeout_s::Real=-1)

Überwacht eine Datei oder ein Verzeichnis path auf Änderungen, bis eine Änderung aufgetreten ist oder timeout_s Sekunden vergangen sind. Diese Funktion pollt das Dateisystem nicht, sondern verwendet plattformspezifische Funktionen, um Benachrichtigungen vom Betriebssystem zu erhalten (z. B. über inotify unter Linux). Siehe die unten verlinkte NodeJS-Dokumentation für weitere Details.

Dies wird weiterhin Änderungen für path im Hintergrund verfolgen, bis unwatch_folder für dasselbe path aufgerufen wird.

Der zurückgegebene Wert ist ein Paar, bei dem das erste Feld der Name der geänderten Datei ist (sofern verfügbar) und das zweite Feld ein Objekt mit den booleschen Feldern renamed, changed und timedout ist, die das Ereignis angeben.

Dieses Verhalten dieser Funktion variiert leicht zwischen den Plattformen. Siehe https://nodejs.org/api/fs.html#fs_caveats für detailliertere Informationen.

source
FileWatching.unwatch_folderFunction
unwatch_folder(pfad::AbstractString)

Stoppen Sie die Hintergrundverfolgung von Änderungen für pfad. Es wird nicht empfohlen, dies zu tun, während eine andere Aufgabe darauf wartet, dass watch_folder für denselben Pfad zurückkehrt, da das Ergebnis unvorhersehbar sein kann.

source

Pidfile

Ein einfaches Dienstprogramm zum Erstellen von Beratungs-Pidfiles (Sperrdateien).

Primary Functions

FileWatching.Pidfile.mkpidlockFunction
mkpidlock([f::Function], at::String, [pid::Cint]; kwopts...)
mkpidlock(at::String, proc::Process; kwopts...)

Erstellt eine pidfile-Sperre für den Pfad "at" für den aktuellen Prozess oder den Prozess, der durch pid oder proc identifiziert wird. Kann eine Funktion annehmen, die einmal nach dem Sperren ausgeführt wird, zur Verwendung in do-Blöcken, nach denen die Sperre automatisch geschlossen wird. Wenn die Sperre fehlschlägt und wait falsch ist, wird ein Fehler ausgelöst.

Die Sperre wird entweder durch close, einen finalizer oder kurz nach dem Verlassen von proc freigegeben. Stellen Sie sicher, dass der Rückgabewert bis zum Ende des kritischen Abschnitts Ihres Programms lebendig bleibt, damit der finalizer ihn nicht vorzeitig zurückgewinnt.

Optionale Schlüsselwortargumente:

  • mode: Dateizugriffsmodus (modifiziert durch die Prozess-Umask). Standardmäßig auf weltweit lesbar.
  • poll_interval: Geben Sie die maximale Zeit zwischen den Versuchen an (wenn watch_file nicht funktioniert)
  • stale_age: Löschen Sie eine vorhandene pidfile (unter Ignorierung der Sperre), wenn sie älter ist als diese viele Sekunden, basierend auf ihrer mtime. Die Datei wird nicht gelöscht, bis sie 5x länger als dies ist, wenn die pid in der Datei zu erscheinen scheint, als könnte sie gültig sein. Oder 25x länger, wenn refresh auf 0 überschrieben wird, um das Aktualisieren der Sperre zu deaktivieren. Standardmäßig ist dies deaktiviert (stale_age = 0), aber ein typischer empfohlener Wert wäre etwa 3-5x eine geschätzte normale Abschlusszeit.
  • refresh: Hält eine Sperre davon ab, veraltet zu werden, indem die mtime in jedem Zeitintervall, das vergeht, aktualisiert wird. Standardmäßig ist dies auf stale_age/2 eingestellt, was der empfohlene Wert ist.
  • wait: Wenn wahr, blockieren, bis wir die Sperre erhalten, wenn falsch, Fehler auslösen, wenn die Sperre fehlschlägt.
source
FileWatching.Pidfile.trymkpidlockFunction
trymkpidlock([f::Function], at::String, [pid::Cint]; kwopts...)
trymkpidlock(at::String, proc::Process; kwopts...)

Wie mkpidlock, außer dass es false zurückgibt, anstatt zu warten, wenn die Datei bereits gesperrt ist.

Julia 1.10

Diese Funktion erfordert mindestens Julia 1.10.

source
Base.closeMethod
close(lock::LockMonitor)

Gibt einen pidfile-Lock frei.

source

Helper Functions

FileWatching.Pidfile.open_exclusiveFunction
open_exclusive(path::String; mode, poll_interval, wait, stale_age, refresh) :: File

Erstellt eine neue Datei für Lese-Schreib-Beratungs-exklusive Zugriffe. Wenn wait false ist, wird ein Fehler ausgegeben, wenn die Sperrdateien existieren, andernfalls wird blockiert, bis wir die Sperre erhalten.

Für eine Beschreibung der Schlüsselwortargumente siehe mkpidlock.

source
FileWatching.Pidfile.tryopen_exclusiveFunction
tryopen_exclusive(path::String, mode::Integer = 0o444) :: Union{Void, File}

Versuchen Sie, eine neue Datei für den Lese-Schreib-Zugriff mit exklusiver Beratung zu erstellen. Geben Sie nichts zurück, wenn sie bereits existiert.

source
FileWatching.Pidfile.parse_pidfileFunction
parse_pidfile(file::Union{IO, String}) => (pid, hostname, age)

Versuchen Sie, unser pidfile-Format zu parsen, wobei ein Element durch (0, "", 0.0) ersetzt wird, wenn ein Lesevorgang fehlschlägt.

source
FileWatching.Pidfile.stale_pidfileFunction
stale_pidfile(path::String, stale_age::Real, refresh::Real) :: Bool

Hilfsfunktion für open_exclusive, um zu entscheiden, ob eine pidfile veraltet ist.

source
Base.Filesystem.touchMethod
Base.touch(::Pidfile.LockMonitor)

Aktualisiert die mtime des Locks, um anzuzeigen, dass er noch aktuell ist.

Siehe auch das refresh-Schlüsselwort im mkpidlock Konstruktor.

source