Файл журналу скриптів Bash відображається на екрані безперервно


75

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

Отже, як приклад, скажімо, я хочу apache/error.logпостійно оновлювати запущений журнал на екран (термінал ssh).


Відповіді:


109

Спробуйте команду хвоста:

tail -f filename

2
vu ну тепер я почуваюся ідіотом. Я весь час використовую команду tail (тільки не з параметром -f). чоловічий хвіст був би моїм другом. Дякую, саме те, що я шукав !! Прийме відповідь, коли дозволить (9 хв.)
Аарон Мюррей

vu це навіть краще, ніж писати сценарій :) (хоча, можливо, його також можна додати до сценарію)
Аарон Мюррей,

2
з опцією --follow=nameви будете впевнені, що вміст файлу журналу відображатиметься, навіть якщо файл було повернуто / відтворено завданням cron.
Седрик Жульєн,

2
@aaron Просто примітка, оскільки ви згадали, що створюєте програму, а потім плануєте вилучити журнал, будьте обережні, щоб зрозуміти, що те, що ви написали рядок у програмі, не означає, що рядок з’явився в журналі оскільки вихідні дані можуть бути буферизовані.
frankc

28

Іншим рішенням є

 less +F filename

або просто less filenameі введіть у нього "F" (натискання shift+ f). Це може бути краще tail, оскільки це дозволяє тимчасово скасувати безперервний друк, повернутися назад, щоб щось переглянути, і знову ввімкнути його за допомогою "F" ( shift+ f)


Я роблю нотатки, це чудова альтернатива!
Аарон Мюррей,

Крім того, він може усікати довгі рядки з коробки для вас із -Sпрапором, дозволяючи вам прокручувати їх вліво / вправо. Перевершує tail -f file.log | cut ...метод.
sevko

Я не розумію ключової комбінації. FТоді спочатку натисніть Shift? Або натиснути їх одночасно? Я намагався, але це не мало різниці.
маня

1
бо, дякую, просто введіть "F" (Shift + F) - натисніть і утримуйте Shift, потім натисніть f, потім відпустіть обидві клавіші. Редагував мою відповідь.
osgx

11

Команда watch також може бути корисною.

watch tail logfile

Покаже вам останні 5 рядків файлу журналу. Він може бути розширений до будь-якої команди, яка друкує матеріали до stdout.

Так, використання tail -f- це традиційне рішення, але залежно від того, що ви намагаєтесь зробити, це може працювати краще.


1
більше приміток. Linux = мільйон способів зняти шкіру з тієї самої кішки :) дякую
Аарон Мюррей,

6

ssh {remotehost} tail -n0f {logfile}

Це дасть вам нуль рядків спочатку і постійно друкуватиме всі нові рядки, які з’являються у файлі.


6

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

less filename.txt
and press 'F'

має один плюс - ви можете будь-коли натиснути CTRL-C і прокрутити назад журнал і почати перегляд знову за допомогою "F".


1
Я настільки вражений часом відповіді на запитання, я спробував відповісти на кілька запитань, і тут багато людей швидше натискають кнопку оновлення, ніж я :) Дякую також за відповідь / підказку
Аарон Мюррей,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.