Equivalente de tail / less --follow-name sob OS X

1

Eu preciso de tail -f um arquivo de log que é girado.

Este é o mesmo problema exato que está aqui, mas no OS X:

Por que o modo menos cauda pára de funcionar?

Então, como posso acompanhar constantemente um arquivo cujo inode pode ser alterado no OS X?

    
por Weezy 29.07.2011 / 01:22

1 resposta

1

Do Ubuntu Lucid (coreutils 7.4)

   -f, --follow[={name|descriptor}]
          output appended data as the file grows; -f, --follow, and --follow=descriptor are equivalent

   With --follow (-f), tail defaults to following the file descriptor, which means that even if a tail'ed file is renamed, tail will continue to track its end.  This default behavior is not desirable when  you  really  want  to
   track  the  actual  name  of  the  file, not the file descriptor (e.g., log rotation).  Use --follow=name in that case.  That causes tail to track the named file by reopening it periodically to see if it has been removed and
   recreated by some other program

No Mac OS X 10.6 (10A432)

 -f      The -f option causes tail to not stop when end of file is
         reached, but rather to wait for additional data to be appended to
         the input.  The -f option is ignored if the standard input is a
         pipe, but not if it is a FIFO.

 -F      The -F option implies the -f option, but tail will also check to
         see if the file being followed has been renamed or rotated.  The
         file is closed and reopened when tail detects that the filename
         being read from has a new inode number.  The -F option is ignored
         if reading from standard input rather than a file.

Supondo que você queira o comportamento --follow = /tmp/something.txt no Linux, isso significa que no Mac o que você quer é:

tail -F /tmp/somefile.txt

Editar : Apenas testado no Mac OSX (Snow Leopard) e -F só abrirá o nome do arquivo que você inserir, e NÃO seguirá o descritor inode / file do arquivo abriu quando foi movido.

    
por 29.07.2011 / 01:38