#linux #bash #logging
#linux #bash #ведение журнала
Вопрос:
Я создаю приложение, которое записывает данные в файл журнала, и мне нужно знать, как в Linux / Bash непрерывно выводить файл журнала на экран (обновляя экран с каждой новой строкой, введенной в журнал).
Итак, в качестве примера, допустим, я хочу постоянно обновлять журнал выполнения apache/error.log
на экране (ssh-терминал).
Комментарии:
Ответ №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. Я так поражен временем отклика на вопросы, я попытался ответить на пару вопросов, и есть много людей, которые быстрее нажимают на кнопку обновления, чем я 🙂 Также спасибо за ответ / подсказку