Любой способ транслировать файл в Linux

Любой способ транслировать файл в Linux

У меня есть вывод терминала, который я хотел бы сделать доступным нескольким пользователям.

в настоящее время что-то вроде:

command > /var/logs

для ввода, и:

watch tail -30 /var/logs

для входных клемм.

Однако это нежелательно, поскольку отслеживаются только опросы, а не вывод информации при наличии обновлений, а tail не допускает прокрутку назад.

решение1

Вы ставите две проблемы:

смотреть только опросы, а не выводить информацию о наличии обновлений

tail -fне опрашивает. Начиная с версии 7.5 GNU Coreutils, tail -fбудет использовать интерфейс ядра Linux inotifyдля получения сигналов от ядра, указывающих на то, что файл был изменен. Если вы не используете GNU Coreutils или используете версию старше 7.5 по какой-то причине, он будет опрашивать раз в секунду. Он, вероятно, также опрашивает в операционных системах POSIX, отличных от Linux (BSD, Solaris и т. д.), но вам придется исследовать это в каждом конкретном случае: некоторые из этих ОС используют GNU Coreutils, но ядро ​​не поддерживает ; некоторые из них вообще inotifyне используют GNU Coreutils для реализации .tail

tail не допускает прокрутку назад

Команда lessспециально разработана для буферизации данных stdin(например, из tailкоманды) и позволяет вам прокручивать вперед и назад. Буфер не безграничен, но вы можете использовать параметры командной строки, чтобы увеличить или уменьшить буфер, а также изменить длину буфера для прокрутки назад и вперед.

Так что, может быть, что-то вроде:

tail -f /var/logs | less

позволит вам сохранять буфер прокрутки журналов без опроса ( tailон просто простаивает, не потребляя ресурсы ЦП, пока ядро ​​не пошлет ему сигнал, сообщающий, что файл был изменен).

Если вам нужно, чтобы несколько пользователей могли читать из одного и того же буфера, вы можете просто запустить tail -f /var/logsв рамках screenсеанса. Мой первоначальный ответ не учитывал, что вы хотите запустить это, чтобы несколько пользователей могли видеть одни и те же данные журнала одновременно. @Let_Me_Be упомянул screen, и тогда мне пришло в голову, что это, вероятно, ваш лучший выбор.

Итак, объединяем мое решение и решение @Let_Me_Be:

screen -mdS logview -- tail -f /var/logs

Предупреждение: не проверено. Пожалуйста, отредактируйте, если это неправильно. Но я думаю, что мы близки к правильному решению.

Теперь вам просто нужно иметь screenмногопользовательский режим. Это немного сложно, поэтому я позволюэтотсайт говорит сам за себя. Суть в том, что вам нужно добавить multiuser onв свой ~/.screenrcфайл. Также см.Распространенные проблемывнизу этой ссылки.

Теперь для пользователей, желающих просмотреть журнал:

screen -rS logview

следует это сделать.

решение2

Вам нужна программа вроде screenили tmux.

Связанный контент