Недавно я заметил, что иногда tail -f <logfile>
перестает обновляться на экран.
Делая Ctrl>- Cи перезапуская все tail
работает нормально, все же. И я проверил, чтобы убедиться, что файл журнала не вращается в середине потока (что может привести к tail
сумасшествию).
Что вызвало бы это? Я использую RHEL 5.2 x64.
Ответы:
Попробуйте добавить команду tail,
strace
если она у вас есть:Тогда просто для сумасшедших рекурсивных ударов вы можете привязать вывод strace (не имеет значения, сломается ли это, потому что он выходит в файл):
Моя выглядит так:
-T включает время и -T включает время, проведенное в вызовах.
Нажмите return 4 или 5 раз, чтобы освободить место в вертикальном направлении, затем подождите, пока он не прекратит работу. Надеюсь, на выходе будут некоторые подсказки.
источник
Попробуйте использовать:
tail --follow=name <logfile>
И посмотри, работает ли это лучше. Вам не нужно беспокоиться о том, что это будет повернуто из-под вас.
Какой-нибудь шаблон, чтобы это остановить? Определенная продолжительность времени? Определенное время суток?
источник
tail
- он просто периодически (иногда между 2 и 20 часами) перестает следовать за ним ... хотелось бы, чтобы был еще шаблон: - \screen
сеансе для расширенной отладки, и это вызывает беспокойствоУчитывая, что оба проблемных файла журнала записываются разными компонентами одного и того же приложения, мне интересно, не является ли это какой-то частью кода ведения журнала для этого приложения, вызывающего проблему. Я предлагаю два теста, чтобы лучше понять, что происходит:
Обратите внимание на inode logfile (
ls -i logfile
) до запуска хвоста, и, как только хвост завершится неудачей, проверьте его еще раз. Если индекс изменился, то регистратор переписывает весь лог-файл, что нарушит соединение tail.Обратите внимание на последнюю строку, прежде чем tail перестает работать, а затем зайдите в файл и найдите первую запись в журнале после этой строки. Сделайте это 3-5 раз, если это возможно. Если проблема заключается в том, что программа ведет запись в журнал, скорее всего, это та часть программы, которая записала запись в журнал сразу после того, как вы увидели, что разрыв файла завершен. Если эта запись в журнале всегда одна и та же или если она исходит от одного и того же компонента программы, у вас может быть достаточно данных, чтобы отправить отчет о проблеме поставщику приложения.
Удачи.
источник
Имея ту же проблему здесь.
Проблема была в том, что файл, который я смотрю, был смонтирован с другой машины. Уведомление об изменении не было распространено через монтирование.
Решением было использовать хвост на оригинальной машине.
источник