2010-12-10 2 views
0

это прослеживание вопрос моего previous questionshellscript контролировать файл журнала Nginx на Gentoo истекает после файла журнала в формате gzip

Так что у меня этот shellscript следить за лог-файл Nginx на Gentoo, проблема заключается в файл журнала был переименован и gziped после определенного размера файла или периода времени, shellscript все еще ищет исходный дескриптор файла (или inode?), новый файл не будет отображаться.

Мой вопрос: как подключиться к сценарию auto-gzip, чтобы перезапустить скрипт монитора файла журнала, чтобы отслеживать файл журнала ?

BTW Пожалуйста, не делайте этого, используя cronjob или используя таймер. Мне нужен ответ в реальном времени моего монитора.

ответ

2

Используйте -F флаг вместо флага -f для tail (или --follow=name тоже будет работать, хотя это будет работать только на Linux, а -F будет работать на BSDs и Mac OS X, а):

--retry 
      keep trying to open a file even if it is inaccessible when tail 
      starts or if it becomes inaccessible later -- useful only with 
      -f 

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

    -F  same as --follow=name --retry 

    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 descrip- 
    tor (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. 
Смежные вопросы