Хвост перестает отображаться при повороте бревна

Я должен подключить журнал сервера (servicemix), и ротация журнала включена. Как только вращение происходит, хвост перестает отображаться. Я провел несколько исследований, и это ошибка в Debian: Отчет об ошибках Debian. Ошибка была давно. Кто-нибудь знает, нужно ли исправлять эту ошибку в Ubuntu?

Я на Ubuntu 12.04 64 бит. Я не должен упоминать, что эта ошибка - полный ад! Каждый раз, когда у меня возникает проблема, я должен прерывать хвост команды и повторно выполнять команду!

3 ответа

Версия хвоста Gnu coreutils имеет --follow[={name|descriptor}] параметр, который позволяет вам следовать имени файла, а не дескриптору. Он продолжает хвост файлы даже после их поворота или усечения. Из справочного вывода:

При использовании --follow (-f) tail по умолчанию следует за дескриптором файла, что означает, что даже если файл tail'ed переименован, tail будет продолжать отслеживать его конец. Такое поведение по умолчанию нежелательно, если вы действительно хотите отслеживать фактическое имя файла, а не дескриптор файла (например, ротацию журнала). Используйте --follow=name в этом случае. Это приводит к тому, что tail отслеживает именованный файл таким образом, чтобы обеспечить переименование, удаление и создание.

Я нахожусь на Fedora, но я полагаю, что вы можете установить coreutils Gnu на Ubuntu с помощью следующей команды:

sudo apt-get install coreutils

Вы можете автоматизировать прерывание и возобновление вашей хвостовой команды, добавив необходимые команды в ваш logrotate конфиги. Смотрите https://help.ubuntu.com/community/LinuxLogFiles - короче говоря, вы, вероятно, захотите поместить команду в /etc/cron.daily/logrotateобщесистемный crontab, который обрабатывает вращение.

Как указано в сообщении об ошибке, вы можете обойти неисправность inotify код с:

tail ---disable-inotify servicemix.log

Затем он будет использовать старое поведение опроса.

Другие вопросы по тегам