Como começar a seguir um arquivo que ainda não foi criado

12

Eu uso tail para monitorar o progresso de tarefas que sei que gravarão seu progresso em disco. Quase sempre, eu sei qual arquivo eles criarão antes de começar a rodar (os trabalhos são despachados por um agendador em um supercomputador)

Existe uma maneira de tail desses arquivos antes que eles sejam criados? Eu gostaria de fazer isso evitando condições de corrida e / ou fazendo suposições sobre como ou quando os trabalhos são gravados no disco.

    
por Amelio Vazquez-Reina 09.02.2012 / 02:31

2 respostas

13

Use o sinal -F para o final (supondo que você tenha tail do 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
    
por 09.02.2012 / 02:46
3

Se a sua implementação de tail não tiver a opção --retry , provavelmente você poderia apenas trapacear e criar o arquivo:

$ touch file && tail-f file

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

    
por 02.02.2014 / 18:52