Como iniciar um arquivo que ainda não foi criado

12

Eu uso tailpara monitorar o progresso dos trabalhos que sei que gravarão o progresso deles em disco. Quase sempre, eu sei qual arquivo eles criarão antes de começarem a ser executados (os trabalhos são despachados por um agendador em um supercomputador)

Existe um caminho para tailesses arquivos antes de serem criados? Gostaria de fazer isso, evitando condições de corrida e / ou fazendo suposições sobre como ou quando os trabalhos gravam no disco.

Amelio Vazquez-Reina
fonte

Respostas:

13

Use a -Fflag para Tail (assumindo que você tenha taildo GNU coreutils):

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

De 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
fonte
3

Se sua tailimplementação não tiver a --retryopção, você provavelmente poderá trapacear e criar o arquivo você mesmo:

$ touch file && tail-f file

Dependendo dos seus requisitos em relação à propriedade e às permissões que podem ser suficientes.

terdon
fonte