срок действия шеллскрипта для отслеживания файла журнала nginx в Gentoo истекает после того, как файл журнала был gzip'ed - PullRequest
0 голосов
/ 10 декабря 2010

это следующий вопрос моего предыдущего вопроса

Итак, у меня есть этот шеллскрипт для мониторинга файла журнала nginx в Gentoo, проблема в том, что файл журнала был переименован и распакован послеопределенный размер файла или период времени, шеллскрипт все еще ищет исходный дескриптор файла (или inode?), новое содержимое файла не будет отображаться.

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

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

1 Ответ

2 голосов
/ 10 декабря 2010

Используйте флаг -F вместо флага -f для tail (или --follow=name тоже будет работать, хотя это будет работать только в Linux, в то время как -F будет работать на BSDи 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.
...