Як користувачі Linux, ми часто працюємо з тривалими фоновими процесами Linux, які називаються демонами або службами. Деякі з поширених прикладів таких служб – Secure Shell (sshd), Network Manager (networkd), Volume Manager (LVM), Cron, і список можна продовжувати.
Багато разів нам необхідно відстежувати журнали цих служб для налагодження системних проблем. Однак одна з основних проблем полягає в тому, що ці служби генерують велику кількість журналів, і в більшості випадків перегляд цих журналів стає громіздким, тому тут ми можемо використовувати команду tail.
Команда tail – це утиліта командного рядка, аналогічна команді head, яка читає файл і друкує останні 10 рядків (вміст) одного або декількох файлів на стандартний вивід.
Синтаксис команди tail
Синтаксис команди tail аналогічний іншим командам Linux:
$ tail [OPTIONS] [FILE-1] [FILE-2] ...
1. Друк останніх 10 рядків файлу в Linux
За замовчуванням команда tail друкує останні 10 рядків заданого файлу, як показано на малюнку.
$ tail /var/log/secure
Тут ми бачимо, що наведена вище команда показує останні десять рядків із файлу /var/log/secure.
2. Друк останніх N рядків файлу в Linux
В останньому прикладі команда друкує останні 10 рядків даного файлу. Однак ми можемо використовувати опцію -n, яка дозволяє нам обмежити кількість рядків, що виводяться на екран, як показано на малюнку.
$ tail -n 3 /var/log/secure
У цьому прикладі ми бачимо, що тепер команда показує тільки останні три рядки замість десяти рядків.
3 Ігнорування перших N рядків файлу в Linux
Тут ми можемо використовувати символ плюс (+) з опцією -n, яка дозволяє нам керувати точкою відліку від заданого файлу.
Щоб зрозуміти це, давайте використаємо значення +5, щоб почати виведення з 5-го рядка:
$ tail -n +5 /var/log/secure
4. Показати останні N символів файлу
Аналогічно рядкам, ми також можемо використовувати команду для відображення останніх N символів файлу за допомогою опції -c, як показано нижче:
$ tail -c 7 /var/log/secure
У цьому прикладі ми бачимо, що команда показує останні сім ASCII-символів заданого файлу.
5. Видалення перших N символів файлу
Аналогічно, ми можемо використовувати символ плюс (+) з опцією -c, щоб пропустити перші N символів. Отже, давайте пропустимо перший рядок файлу за допомогою такої команди:
$ tail -c +5 /var/log/secure
Тут ми бачимо, що команда показує всі рядки, крім першого.
6. Показувати ім’я файлу в заголовку
Ми можемо вказати команді tail відображати ім’я поточного файлу у вигляді заголовка, що дуже зручно під час роботи з кількома файлами.
Отже, давайте скористаємося опцією -v, щоб увімкнути відображення заголовка:
$ tail -n 3 -v /var/log/secure
У наведеному вище виводі, ==> /var/log/secure <== являє собою відображуваний заголовок.
7. Показувати ім’я файлу як заголовок у кількох файлах
Як і будь-яка інша команда обробки файлів, команда tail може використовувати кілька файлів. У таких випадках для поділу вмісту файлів використовується відображуваний заголовок.
$ tail -n 3 -v /var/log/secure /var/log/secure-20230402
У наведеному вище висновку ми можемо бачити відображуваний заголовок для кожного файлу.
8. Як вимкнути відображення заголовка у файлі
У попередньому прикладі ми бачили, що команда вмикає відображення заголовка під час роботи з кількома файлами. Однак ми можемо відключити цю поведінку за замовчуванням за допомогою опції -q.
$ tail -q -n 3 /var/log/secure /var/log/secure-20230402
Тут ми бачимо, що тепер команда відображає вміст файлу один за одним без будь-якого заголовка.
9. Як стежити за змінами у файлі
Досі ми бачили, що команда tail завершує роботу, щойно обробить необхідну кількість рядків або символів. Однак іноді ми хочемо переглянути щойно створені журнали.
У таких випадках ми можемо використовувати опцію -f, яка дає змогу стежити за змінами у файлі в режимі реального часу.
Щоб зрозуміти це, спочатку виконаємо наведену нижче команду в першому терміналі:
$ tail -f /var/log/messages
Тут ми бачимо, що команда чекає нескінченно довго після відображення останніх десяти рядків:
Далі, давайте відкриємо інший термінал і додамо деякий текст у файл numbers-2.txt:
$ echo "View Logs in Real-Time" >> /var/log/messages
Тепер давайте перемкнемося на перший термінал, щоб переглянути новий доданий текст:
$ tail -f /var/log/messages
Тут ми бачимо, що команда tail показує щойно доданий текст.