Две проблемы, которые вы ставите:
смотреть только опросы в отличие от вывода, когда есть обновления
tail -f
не опрашивает. Начиная с версии 7.5 GNU Coreutils, tail -f
будет использовать интерфейс inotify
ядра Linux для получения сигналов от ядра, указывающих, что файл был изменен. Если вы не используете GNU Coreutils или по какой-либо причине используете версию более старую, чем 7.5, она будет опрашивать один раз в секунду. Возможно, он также опрашивает операционные системы POSIX, отличные от Linux (BSD, Solaris и т.д.), Но вам придется исследовать его в каждом конкретном случае: некоторые из этих ОС используют GNU Coreutils, но ядро не поддерживает inotify
; некоторые из них вообще не используют GNU Coreutils для реализации tail
.
хвост не позволяет прокрутки
Команда less
специально предназначена для буферизации данных из stdin
(например, из команды tail
) и позволяет вам прокручивать назад и вперед. Буфер не является неограниченным, но вы можете использовать параметры командной строки, чтобы увеличить или уменьшить буфер, а также изменить длину буфера для обратной прокрутки и прямой прокрутки.
Так что-то вроде
tail -f /var/logs | less
позволит вам хранить буфер обратной прокрутки журналов без опроса (tail
просто сидит там без дела, не потребляя ЦП, пока ядро не выдаст ему сигнал, сообщающий, что файл был изменен).
Если вам нужно, чтобы несколько пользователей могли читать из одного буфера, вы можете просто запустить tail -f /var/logs
в сеансе screen
. В моем первоначальном ответе не учитывалось, что вы хотите выполнить это, чтобы несколько пользователей могли видеть одни и те же данные журнала одновременно. @ Пусть_Me_Be упомянул screen
а потом мне пришло в голову, что это, вероятно, ваш лучший выбор.
Итак, совместим мое решение и решение @ Let_Me_Be:
screen -mdS logview -- tail -f /var/logs
Предупреждение: не проверено. Пожалуйста, измените, если это не так. Но я думаю, что мы находимся на пути к правильному решению здесь.
Теперь вам просто нужно иметь screen
в многопользовательском режиме. Это немного сложно, поэтому я позволю этому сайту говорить за себя. Суть в том, что вам нужно добавить multiuser on
в ваш файл ~/.screenrc
. Также смотрите Общие проблемы внизу этой ссылки.
Теперь пользователи могут просматривать журнал:
screen -rS logview
должен сделать это.