staging.inyokaproject.org

Keine Ausgabe des Dateiinhaltes mit cat/grep/tail bei inotify

Status: Ungelöst | Ubuntu-Version: Xubuntu 22.04 (Jammy Jellyfish)
Antworten |

Fried-rich

Anmeldungsdatum:
2. Mai 2013

Beiträge: 1162

Hallo,

ich will mit inotify ein Verzeichnis überwachen und falls Textdateien da rein gespeichert werden diese bearbeiten. Ich lasse das Verzeichnis mit inotifywait überwachen. Normal bricht inotify den Prozess ab sobald eine Datei entsprechend den Bedingungen gefunden wurde. Ich lasse das daher in einer Schleife laufen. Aber weder bei

while true; do
 file=$(inotifywait -e create --format %w%f /pfad/zum/verzeichnis)
 cat $file
done

noch

inotifywait -mrq -e create --format %w%f /pfad/zum/verzeichnis/ | while read FILE
do
 cat $FILE
done

wird der Befehl cat (oder grep oder tail oder irgend etwas das den Inhalt der Datei ausgibt) ausgeführt. Die Datei manuell mit cat öffnen geht, nur bei Verwendung von inotify nicht.

Verstehe ich nicht. Zumal ich mich erinnern kann, dass sowas schon einmal funktioniert hat mit cat.

Fried-rich

(Themenstarter)

Anmeldungsdatum:
2. Mai 2013

Beiträge: 1162

Es Liegt glaube ich daran, dass inotifywait eine neue Datei findet die zwar schon angelegt, in die aber noch nichts geschrieben wurde. Zu dem Zeitpunkt als der Schreibvorgang abgeschlossen ist, macht inotify nichts mehr. Mit einem sleep 1 geht das.

Gibt es eine Möglichkeit zu prüfen wann der Schreibvorgang abgeschlossen ist?

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

Fried-rich schrieb:

Es Liegt glaube ich daran, dass inotifywait eine neue Datei findet die zwar schon angelegt, in die aber noch nichts geschrieben wurde. Zu dem Zeitpunkt als der Schreibvorgang abgeschlossen ist, macht inotify nichts mehr. Mit einem sleep 1 geht das.

Sleep ist eine ganz schlechte Idee.

Gibt es eine Möglichkeit zu prüfen wann der Schreibvorgang abgeschlossen ist?

Du musst die Events filtern und nur CLOSE_WRITE beachten.

Antworten |