كيفية استخدام الأمر tail على Linux

النقاط الرئيسية

  • يعرض الأمر tail في Linux البيانات من نهاية الملف، مما يجعله مفيدًا لمراقبة ملفات السجل وإظهار الإضافات الأخيرة.
  • أدى تقديم systemd في بعض توزيعات Linux إلى تغيير تنسيق ملفات سجل النظام إلى تنسيق ثنائي، ولكن لا تزال العديد من ملفات السجل التي تم إنشاؤها بواسطة التطبيقات تستخدم تنسيق النص العادي.
  • بالإضافة إلى عرض التحديثات في الوقت الفعلي، يمكن أيضًا استخدام tail لعرض عدد معين من الأسطر، والعمل مع ملفات متعددة، وعرض الأسطر من بداية الملف، واستخدام إزاحات البايت، ويمكن دمجها مع أوامر أخرى من خلال الأنابيب.



لينكس tail يعرض الأمر البيانات من نهاية الملف. ويمكنه أيضًا عرض التحديثات التي تمت إضافتها إلى الملف في الوقت الفعلي. سنوضح لك كيفية استخدامه.


هل قام systemd بقتل tail؟

ال tail يعرض لك الأمر البيانات من نهاية الملف. عادةً، تتم إضافة بيانات جديدة إلى نهاية الملف، لذا tail يعد الأمر طريقة سريعة وسهلة لرؤية أحدث الإضافات إلى ملف. كما يمكنه أيضًا مراقبة ملف وعرض كل إدخال نصي جديد في هذا الملف عند حدوثه. وهذا يجعله أداة رائعة لمراقبة ملفات السجل.

لقد اعتمدت العديد من توزيعات لينكس الحديثة systemd مدير النظام والخدمة. هذه هي العملية الأولى التي يتم تنفيذها، ولديها معرف العملية 1وهو بمثابة الأصل لجميع العمليات الأخرى. كان هذا الدور في السابق تم التعامل معه من قبل كبار السن نظام التهيئة.


مع هذا التغيير جاء تنسيق جديد لملفات سجل النظام. لم يعد يتم إنشاؤها بنص عادي، تحت systemd يتم تسجيلها بتنسيق ثنائي. اقرأ ملفات السجل هذه، يجب عليك استخدامها الأداة المساعدة journactl. tail يعمل الأمر مع تنسيقات النص العادي. ولا يقرأ الملفات الثنائية. فهل يعني هذا أن tail هل الأمر هو الحل في البحث عن مشكلة؟ هل لا يزال لديه ما يقدمه؟

هناك المزيد tail إن الأمر الذي يتطلب إظهار التحديثات في الوقت الفعلي ليس بالأمر السهل. وفي هذا الصدد، لا يزال هناك الكثير من ملفات السجل التي لا يتم إنشاؤها بواسطة النظام ولا تزال تُنشأ كملفات نصية عادية. على سبيل المثال، لم يتغير تنسيق ملفات السجل التي تم إنشاؤها بواسطة التطبيقات.

استخدام tail على لينكس

مرر اسم الملف إلى tail وسوف يعرض لك آخر عشرة أسطر من هذا الملف. تحتوي ملفات الأمثلة التي نستخدمها على قوائم من الكلمات المفرزة. كل سطر مرقم، لذا يجب أن يكون من السهل متابعة الأمثلة ومعرفة تأثير الخيارات المختلفة.

tail word-list.txt


ملف tail word-list.txt في نافذة المحطة الطرفية

لرؤية عدد مختلف من الخطوط، استخدم -n خيار (عدد الأسطر):

tail -n 15 word-list.txt

tail -n 15 word-list.txt في نافذة المحطة الطرفية

في الواقع، يمكنك الاستغناء عن “-n”، واستخدام شرطة “-” والرقم فقط. تأكد من عدم وجود مسافات بينهما. من الناحية الفنية، هذا هو نموذج الأمر القديم، ولكنها لا تزال في صفحة الرجلومازال يعمل.

tail -12 word-list.txt

ملف tail -12 word-list.txt في نافذة المحطة الطرفية


استخدام tail مع ملفات متعددة

يمكنك الحصول على tail العمل مع ملفات متعددة في وقت واحد. ما عليك سوى تمرير أسماء الملفات على سطر الأوامر:

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

tail -n 4 list-1.txt list-2.txt list-3.txt في نافذة المحطة الطرفية

يتم عرض رأس صغير لكل ملف حتى تتمكن من معرفة الملف الذي تنتمي إليه الأسطر.

عرض الأسطر من بداية الملف

ال + (العد من البداية) يجعل التعديل tail عرض الأسطر من بداية الملف، بدءًا من رقم سطر معين. إذا كان ملفك طويلًا جدًا واخترت سطرًا قريبًا من بداية الملف، فستحصل على قدر كبير من الإخراج المرسل إلى نافذة المحطة الطرفية. إذا كانت هذه هي الحالة، فمن المنطقي توجيه الإخراج من tail داخل less.

tail +440 list-1.txt


tail +44 list-1.txt في نافذة المحطة الطرفية

أنت تستطيع تصفح النص بطريقة منظمة.

يتم عرض الناتج من الذيل في نافذة المحطة الطرفية بشكل أقل

نظرًا لوجود 20,445 سطرًا في هذا الملف، فإن هذا الأمر يعادل استخدام الخيار “-6”:

tail +20440 list-1.txt

tail +20440 list-1.txt في نافذة المحطة الطرفية


استخدام البايتات مع الذيل

يمكنك أن تقول tail لاستخدام الإزاحات بالبايتات بدلاً من الأسطر باستخدام -c خيار (بايت). قد يكون هذا مفيدًا إذا كان لديك ملف نص تم تنسيقه إلى سجلات ذات حجم عادي. لاحظ أن حرف السطر الجديد يُحسب كبايت واحد. سيعرض هذا الأمر آخر 93 بايتًا في الملف:

tail -c 93 list-2.txt

tail -c 93 list-2.txt في نافذة المحطة الطرفية

يمكنك الجمع بين -c خيار (بايت) مع + (العد من بداية الملف) المعدِّل، وحدد الإزاحة بالبايتات المحسوبة من بداية الملف:

tail -c +351053 list-e.txt

tail -c +351053 list-e.txt في نافذة المحطة الطرفية


الأنابيب في الذيل

في وقت سابق، قمنا بتوصيل الناتج من tail داخل less يمكننا أيضًا توجيه الإخراج من الأوامر الأخرى إلى tail.

لتحديد الملفات أو المجلدات الخمسة التي تحتوي على أقدم أوقات التعديل، استخدم -t (الفرز حسب وقت التعديل) الخيار مع ls ، وتوجيه الإخراج إلى tail.

ls -tl | tail -5

ls -lt | tail -5 في نافذة المحطة الطرفية

ال head يأمر يسرد أسطر النص من بداية الملفيمكننا الجمع بين هذا مع tail لاستخراج جزء من الملف. هنا، نستخدم head أمر لاستخراج أول 200 سطر من ملف. يتم توجيه هذا الأمر إلى tail، وهو استخراج آخر عشرة أسطر. وهذا يعطينا الأسطر من 191 إلى السطر 200. أي آخر عشرة أسطر من أول 200 سطر:


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

head -n 200 list-1.txt | tail -10 في نافذة المحطة الطرفية

يقوم هذا الأمر بإدراج العمليات الخمس الأكثر استهلاكًا للذاكرة.

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

ps aux | sort -nk +4 | tail -5 في نافذة المحطة الطرفية

دعونا نكسر ذلك.

ال ps يأمر يعرض معلومات حول العمليات الجاريةالخيارات المستخدمة هي:

  • أ:قم بإدراج جميع العمليات، وليس فقط تلك الخاصة بالمستخدم الحالي.
  • انت:عرض إخراج موجه للمستخدم.
  • س:قم بإدراج جميع العمليات، بما في ذلك تلك التي لا تعمل داخل TTY.


ال sort يأمر يقوم بفرز الناتج من ps . الخيارات التي نستخدمها مع sort نكون:

  • ن:الفرز عدديًا.
  • ك +4:الفرز على العمود الرابع.

ال tail -5 يعرض الأمر آخر خمس عمليات من الناتج المفرز. هذه هي العمليات الخمس الأكثر استهلاكًا للذاكرة.

استخدام tail لتتبع الملفات في الوقت الفعلي

يعد تتبع إدخالات النصوص الجديدة التي تصل إلى ملف — عادةً ملف سجل — أمرًا سهلاً باستخدام tail. مرر اسم الملف على سطر الأوامر واستخدم -f خيار (متابعة).

tail -f geek-1.log

tail -f geek-1.log في نافذة المحطة الطرفية

مع إضافة كل إدخال سجل جديد إلى ملف السجل، يقوم tail بتحديث عرضه في نافذة المحطة الطرفية.

الإخراج من tail -f geek-1.log في نافذة المحطة الطرفية


يمكنك تحسين الناتج ليشمل فقط الأسطر ذات الصلة أو الاهتمام الخاص. هنا، نستخدم grep ل إظهار الخطوط التي تتضمن فقط كلمة “متوسط”:

tail -f geek-1.log | grep average

tail -f geek-1.log | متوسط ​​grep في نافذة المحطة الطرفية

لمتابعة التغييرات على ملفين أو أكثر، مرر أسماء الملفات على سطر الأوامر:

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

tail -f -n 5 geek-1.log geek-2.log في نافذة المحطة الطرفية

يتم وضع علامة على كل إدخال باستخدام رأس يوضح الملف الذي جاء منه النص.


الإخراج من tail -f -n 5 geek-1.log geek-2.log

يتم تحديث العرض في كل مرة يصل فيها إدخال جديد إلى ملف تم متابعته. لتحديد فترة التحديث، استخدم -s خيار (فترة النوم). هذا يخبرك tail الانتظار لعدد من الثواني، خمس ثوانٍ في هذا المثال، بين عمليات فحص الملفات.

tail -f -s 5 geek-1.log

tail -f -s 5 geek-1.log في نافذة المحطة الطرفية

من المؤكد أنه لا يمكنك معرفة ذلك من خلال النظر إلى لقطة الشاشة، ولكن التحديثات التي تطرأ على الملف تحدث مرة كل ثانيتين. ويتم عرض إدخالات الملف الجديدة في نافذة المحطة الطرفية مرة كل خمس ثوانٍ.


الإخراج من tail -f -s 5 geek-1.log

عند متابعة الإضافات النصية لأكثر من ملف، يمكنك إخفاء العناوين التي تشير إلى ملف السجل الذي يأتي منه النص. استخدم -q (الخيار الهادئ) للقيام بذلك:

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

tail -f -q geek-1.log geek-2.log في نافذة المحطة الطرفية

يتم عرض الناتج من الملفات في مزيج متجانس من النصوص. ولا يوجد أي مؤشر على ملف السجل الذي جاءت منه كل إدخالة.


الإخراج من tail -f -q geek-1.log geek-2.log في نافذة المحطة الطرفية

الذيل لا يزال له قيمة

على الرغم من أن الوصول إلى ملفات سجل النظام يتم توفيره الآن بواسطة journalctl, tail لا يزال لديه الكثير ليقدمه. وهذا صحيح بشكل خاص عند استخدامه بالتزامن مع أوامر أخرى، عن طريق التوصيل إلى أو خارج tail.

systemd ربما تكون قد غيرت المشهد، ولكن لا يزال هناك مكان للأدوات المساعدة التقليدية التي تتوافق مع فلسفة يونكس في القيام بشيء واحد والقيام به بشكل جيد.

أضف تعليق