So starten Sie das Tailing einer noch nicht erstellten Datei

12

Ich verwende taildiese Option, um den Fortschritt von Jobs zu überwachen, von denen ich weiß, dass sie ihren Fortschritt auf die Festplatte schreiben. Fast immer weiß ich, welche Datei sie erstellen, bevor sie ausgeführt werden (die Jobs werden von einem Scheduler auf einem Supercomputer verteilt).

Gibt es einen Weg zu taildiesen Dateien, bevor sie erstellt werden? Ich möchte dies tun, während ich die Rennbedingungen vermeide und / oder Annahmen darüber mache, wie oder wann die Jobs auf die Festplatte schreiben.

Amelio Vazquez-Reina
quelle

Antworten:

13

Verwenden Sie die -FFlagge, um abzuschließen (vorausgesetzt, Sie haben tailvon GNU Coreutils):

tail -F file-that-does-not-exist

Von man tail:

   -F     same as --follow=name --retry
   --retry
          keep trying to open a file even when it is or becomes inaccessi
          ble; useful when following by name, i.e., with --follow=name
   -f, --follow[={name|descriptor}]
          output appended data as the file grows; -f, --follow, and --fol
          low=descriptor are equivalent
larsks
quelle
3

Wenn Ihre tailImplementierung nicht über die --retryOption verfügt, können Sie die Datei wahrscheinlich einfach betrügen und selbst erstellen:

$ touch file && tail-f file

Abhängig von Ihren Anforderungen in Bezug auf Eigentumsrechte und Berechtigungen kann dies ausreichend sein.

terdon
quelle