Непрерывное отображение файла журнала скрипта Bash

#linux #bash #logging

#linux #bash #ведение журнала

Вопрос:

Я создаю приложение, которое записывает данные в файл журнала, и мне нужно знать, как в Linux / Bash непрерывно выводить файл журнала на экран (обновляя экран с каждой новой строкой, введенной в журнал).

Итак, в качестве примера, допустим, я хочу постоянно обновлять журнал выполнения apache/error.log на экране (ssh-терминал).

Комментарии:

1. unix.stackexchange.com/questions/45626/…

Ответ №1:

Попробуйте команду tail:

 tail -f filename
  

Комментарии:

1. vu ну, теперь я чувствую себя идиотом. Я постоянно использую команду tail (только не с параметром -f). man tail был бы моим другом. Спасибо, это именно то, что я искал!! Примет ответ, когда это позволит (9 минут)

2. vu это даже лучше, чем написание скрипта 🙂 (хотя, я полагаю, можно было бы добавить и в скрипт)

3. с помощью опции --follow=name вы будете уверены, что содержимое файла журнала будет отображаться, даже если файл был повернут / воссоздан заданием cron.

4. @aaron Просто примечание, поскольку вы упомянули, что создаете приложение, а затем планируете закрыть журнал, просто будьте осторожны, чтобы понять, что только потому, что вы написали строку в приложении, не означает, что строка появилась в журнале, поскольку вывод может быть буферизован.

Ответ №2:

Другим решением является

  less  F filename
  

или просто less filename и введите в него «F» (нажав shift f). Это может быть лучше, чем tail , потому что позволяет временно отменить непрерывную печать, вернуться назад, чтобы что-то посмотреть, и снова включить это с помощью «F» (shift f) снова

Комментарии:

1. Я делаю заметки, это отличная альтернатива!

2. Кроме того, он может «из коробки» усекать длинные строки с помощью -S флага, позволяя вам прокручивать их влево / вправо. Превосходит tail -f file.log | cut ... метод.

3. Я не понимаю комбинацию клавиш. Сначала нажмите, F затем Shift ? Или нажимать их одновременно? Я пытался, но это не имело никакого значения.

4. бекко, спасибо, просто введите «F» (Shift F) — нажмите и удерживайте Shift, затем нажмите f, затем отпустите обе клавиши. Отредактировал мой ответ.

Ответ №3:

Команда watch также может быть полезна.

 watch tail logfile
  

Покажет вам последние 5 строк файла журнала. Его можно расширить до любой команды, которая выводит данные в стандартный вывод.

Да, использование tail -f является традиционным решением, но в зависимости от того, что вы пытаетесь сделать, это может работать лучше.

Комментарии:

1. дополнительные примечания. Linux = миллион способов скинуть одного и того же кота 🙂 спасибо

Ответ №4:

ssh {remotehost} tail -n0f {logfile}

Изначально вы получите нулевые строки и будете непрерывно печатать любые новые строки, которые появляются в файле.

Ответ №5:

Вы также можете:

 less filename.txt
and press 'F'
  

есть один плюс — вы можете в любое время нажать CTRL-C и прокрутить назад в журнале и начать просмотр снова с помощью ‘F’.

Комментарии:

1. Я так поражен временем отклика на вопросы, я попытался ответить на пару вопросов, и есть много людей, которые быстрее нажимают на кнопку обновления, чем я 🙂 Также спасибо за ответ / подсказку