Як використовувати команду tail в Linux

Categories:

Команда Linux tail відображає дані з кінця файлу. Він навіть може відображати оновлення, які додаються до файлу в режимі реального часу. Ми покажемо вам, як ним користуватися.

Systemd Kill tail?

Команда tail показує дані з кінця файлу. Зазвичай нові дані додаються в кінець файлу, тому команда tail — це швидкий і простий спосіб побачити останні додані до файлу. Він також може контролювати файл і відображати кожен новий текстовий запис у цьому файлі в міру їх появи. Це робить його чудовим інструментом для моніторингу файлів журналів.

У багатьох сучасних дистрибутивах Linux використовується система systemd і менеджер служб. Це перший виконаний процес ID процесу 1, і він є батьківським для всіх інших процесів. Раніше ця роль була обробляється старшим система ініціації.

Разом із цією зміною з’явився новий формат файлів системного журналу. Більше не створюються у вигляді простого тексту, у системі systemd вони записуються у двійковому форматі. До прочитати ці файли журналу, які ви повинні використовувати утиліта journalactl. Команда tail працює з форматами звичайного тексту. Він не читає двійкові файли. То чи означає це, що команда tail є рішенням для пошуку проблеми? Чи все ще є що запропонувати?

Команда tail — це більше, ніж показ оновлень у режимі реального часу. І в цьому питанні все ще існує багато файлів журналів, які не генеруються системою і все ще створюються як звичайні текстові файли. Наприклад, файли журналів, створені програмами, не змінили свій формат.

  Як увімкнути автоматичний вхід в Linux

Використання хвоста

Передайте ім’я файлу в хвіст, і воно покаже вам останні десять рядків цього файлу. Приклади файлів, які ми використовуємо, містять списки відсортованих слів. Кожен рядок пронумерований, тому слід легко слідувати прикладам і бачити, який ефект мають різні варіанти.

tail word-list.txt

Щоб побачити різну кількість рядків, використовуйте параметр -n (кількість рядків):

tail -n 15 word-list.txt

Насправді, ви можете обійтися без «-n» і просто використовувати дефіс «-» і число. Переконайтеся, що між ними немає пробілів. технічно, це застаріла форма команди, але він все ще знаходиться в сторінка людини, і це все ще працює.

tail -12 word-list.txt

Використання хвоста з кількома файлами

Ви можете працювати з хвостом одночасно з кількома файлами. Просто передайте імена файлів у командному рядку:

tail -n 4 list-1.txt list-2.txt list-3.txt

Для кожного файлу відображається невеликий заголовок, щоб ви знали, до якого файлу належать рядки.

Відображення рядків з початку файлу

Модифікатор + (лічильник від початку) робить хвіст рядків відображення від початку файлу, починаючи з певного номера рядка. Якщо ваш файл дуже довгий і ви виберете рядок, близький до початку файлу, ви отримаєте багато вихідних даних, надісланих у вікно терміналу. Якщо це так, має сенс перевести вихід з хвоста на менший.

tail +440 list-1.txt

Ти можеш керованою сторінкою тексту.

Оскільки у цьому файлі 20 445 рядків, ця команда еквівалентна використанню параметра «-6»:

tail +20440 list-1.txt

Використання байтів з хвостом

Ви можете наказати хвосту використовувати зміщення в байтах замість рядків, використовуючи параметр -c (байти). Це може бути корисно, якщо у вас є текстовий файл, відформатований у записи звичайного розміру. Зверніть увагу, що символ нового рядка враховується як один байт. Ця команда відобразить останні 93 байти у файлі:

tail -c 93 list-2.txt

Ви можете поєднати параметр -c (байти) з модифікатором + (лічильник від початку файлу) і вказати зміщення в байтах, відрахованих від початку файлу:

tail -c +351053 list-e.txt

Труби в хвіст

Раніше ми передали вихід із хвоста в менший . Ми також можемо передавати вихідні дані інших команд у хвіст.

  8 найкращих програм для Linux для спільного використання робочого столу

Щоб визначити п’ять файлів або папок із найстарішим часом модифікації, скористайтеся параметром -t (сортування за часом модифікації) за допомогою ls і передайте результат у хвіст.

ls -tl | tail -5

Команда голови перераховує рядки тексту з початку файлу. Ми можемо поєднати це з хвостом, щоб витягти розділ файлу. Тут ми використовуємо команду head для вилучення перших 200 рядків з файлу. Це передається в хвіст, який витягує останні десять рядків. Це дає нам рядки з 191 по 200. Тобто останні десять рядків з перших 200 рядків:

head -n 200 list-1.txt | tail -10

Ця команда перелічує п’ять процесів, які найбільше потребують пам’яті.

ps aux | sort -nk +4 | tail -5

Давайте розберемо це.

Команда ps відображає інформацію про запущені процеси. Використовуються такі варіанти:

a: Перелік усіх процесів, а не лише для поточного користувача.
u: відображення виводу, орієнтованого на користувача.
x: перелік усіх процесів, включаючи ті, які не виконуються всередині TTY.

Команда сортування сортує вихід від ps . Параметри, які ми використовуємо для сортування:

n: Сортувати за числом.
k +4: Сортування по четвертому стовпчику.

Команда tail -5 відображає останні п’ять процесів із відсортованого виводу. Це п’ять процесів, які найбільше потребують пам’яті.

Використання хвоста для відстеження файлів у режимі реального часу

Відстеження нових текстових записів, які надходять у файл (зазвичай у файл журналу), легко за допомогою хвоста. Передайте ім’я файлу в командному рядку та скористайтеся опцією -f (follow).

tail -f geek-1.log

Оскільки кожен новий запис журналу додається до файлу журналу, tail оновлює його відображення у вікні терміналу.

  Як оновити програму Discord на Linux

Ви можете уточнити вихід, включивши лише рядки, які мають особливу релевантність або інтерес. Тут ми використовуємо grep для показувати лише рядки, які містять слово «середній»:

tail -f geek-1.log | grep average

Щоб слідкувати за змінами двох або більше файлів, передайте імена файлів у командному рядку:

tail -f -n 5 geek-1.log geek-2.log

Кожен запис позначений тегом заголовка, який показує, з якого файлу надійшов текст.

Відображення оновлюється щоразу, коли надходить новий запис у наступному файлі. Щоб вказати період оновлення, використовуйте параметр -s (період сну). Це наказує tail почекати кілька секунд, у цьому прикладі п’ять, між перевірками файлів.

tail -f -s 5 geek-1.log

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

Коли ви стежите за додаваннями тексту до кількох файлів, ви можете придушити заголовки, які вказують, з якого файлу журналу надходить текст. Використовуйте параметр -q (тихий), щоб зробити це:

tail -f -q geek-1.log geek-2.log

Результати з файлів відображаються у вигляді безшовного змішування тексту. Немає вказівок, з якого файлу журналу походить кожен запис.

хвіст все ще має значення

Хоча доступ до файлів системного журналу тепер надається journalctl, у tail все ще є що запропонувати. Це особливо вірно, коли він використовується разом з іншими командами, шляхом переведення в хвіст або з нього.

systemd, можливо, змінив ландшафт, але все ще є місце для традиційних утиліт, які відповідають філософії Unix: робити одну справу і робити це добре.