سؤال أمر شل لمراقبة التغييرات في ملف - ما يسمى مرة أخرى؟


أعلم أن هناك أمرًا في Unix يمكنني استخدامه لمراقبة أحد الملفات ورؤية التغييرات المكتوبة عليه. كان هذا مفيدًا جدًا خاصةً لفحص ملفات السجل.

هل تعرف ما يطلق عليه؟


139
2018-04-30 21:00


الأصل




الأجوبة:


هل تعني

tail -f logfile.log

؟

(صفحة رجل للذيل)


188
2018-04-30 21:01



نعم ، إنه الوقت الحقيقي. - Adam Gibbins
Sidenote: إذا كان التوزيع الخاص بك يوفر أمر tailf ، فاستخدم ذلك في تفضيل ذيل -f. يعد tailf أكثر كفاءة لأنه لا يحتاج إلى الوصول إلى الملف المراقب إذا لم تتم كتابته (تكون عمليات الاقتراع مثيرة للضيق إذا قمت بتثبيت نظام الملفات مع تحديث التطبيق). - Mihai Limbăşan
في مستخدم سوبر وجدت إجابة التوصية ذيل -F بدلا من -F ، جدا - Rafa
tail -F سيتبع أسماء الملفات بدلاً من كائنات الملف ، وهو مفيد بشكل خاص في حالة تدوير ملف السجل. - Amir Ali Akbari
التحديث ، بعد بضع سنوات: tailf هو الآن موقوف و tail -f آمن. (تأكد من ذلك على نظامك man tailf.) انظر الوثائق: man7.org/linux/man-pages/man1/tailf.1.html - exp1orer


ربما كنت تقصد الذيل ، وفقا لجواب جون سكيت.

واحد آخر مفيد هو راقب. يسمح لك بتشغيل الأمر بشكل دوري ورؤية الشاشة الكاملة للمخرج. فمثلا:

مشاهدة -n 10 -d -LS-l / var / adm / الرسائل

سيتم تشغيل الأمر ls -l /var/adm/messages كل 10 ثوانٍ ، وتسليط الضوء على الفرق في الإخراج بين عمليات التشغيل اللاحقة. (من المفيد مشاهدة مدى سرعة نمو ملف السجل ، على سبيل المثال).


114
2018-04-30 21:07





أنا أفضل استخدام less +FG1 على tail -f لأنني أجد نفسي بحاجة للبحث في ملف سجل لخطأ أو معرف معين. إذا كنت بحاجة للبحث عن شيء ما ، فأنا أكتب ^C لإيقاف متابعة الملف و ? لبدء البحث إلى الوراء.

الارتباطات الرئيسية هي نفسها تقريبا كما في vi. يمكن تهيئة أي أمر عند بدء التشغيل باستخدام + اختيار:

+cmd   Causes  the  specified  cmd  to be executed each time a new file is
       examined.  For example, +G causes less to  initially  display  each
       file starting at the end rather than the beginning.

لسجلات طويلة حقا ، أجد أنه من المناسب استخدام -n الخيار الذي يوقف ترقيم السطر. من الصفحة الرئيسية:

-n or --line-numbers
          Suppresses line numbers.  The default (to use line numbers)  may
          cause  less  to run more slowly in some cases, especially with a
          very large input file.  Suppressing line  numbers  with  the  -n
          option  will  avoid this problem.  Using line numbers means: the
          line number will be displayed in the verbose prompt and in the =
          command,  and the v command will pass the current line number to
          the editor (see also  the  discussion  of  LESSEDIT  in  PROMPTS
          below).

1. قبعة تلميح ل rgmarcha للإشارة إلى ذلك في التعليقات.


33
2018-04-30 23:44



تذكر أن تضع alias مع الخيارات التي تريدها ، حتى لا تضطر إلى كتابتها في كل مرة. - Michael Hampton♦
في الواقع ، يجب عليك عمومًا تفضيل وظائف shell على الأسماء المستعارة في معظم الحالات. - tripleee


inotifywait من عند inotify الأدوات يكون مفيدًا إذا كنت تريد تشغيل أمر في كل مرة يتم فيها تغيير ملف (أو أي ملفات في دليل). فمثلا:

inotifywait -r -m -e modify /var/log | 
   while read path _ file; do 
       echo $path$file modified
   done

27
2018-06-02 12:13





الذيل رائع ... أقل يمكن أيضا أن تستخدم أقل أقل في الملف ، أي أقل myfile ثم اضغط F. وهذا له أقل التصرف كذيل.


19
2018-04-30 21:04



أقل + F myfile سيجعلها أيضا - rgmarcha


أنا أقوم بتحرير ملف LaTeX وأردت مراقبته أيضًا لإجراء تغييرات في مكان ما في المنتصف. أنا ضربت النص التالي للصندوق الصغير الذي أثبت أنه مفيد لي. آمل أن يكون مفيدًا أيضًا لشخص آخر.

#!/bin/bash
FILE="$1"
CMD="$2"
LAST=`ls -l "$FILE"`
while true; do
  sleep 1
  NEW=`ls -l "$FILE"`
  if [ "$NEW" != "$LAST" ]; then
    "$CMD" "$FILE"
    LAST="$NEW"
  fi
done

احفظه watch.sh والقيام به chmod u+x watch.sh. ثم أقوم بتنفيذها على النحو التالي:

./watch.sh file.tex pdflatex

إذا كنت ترغب في تشغيل الأمر فقط في حالة إجراء التعديل الفعلي ، فيمكنك استخدامه `md5sum "$FILE"` بدلا من `ls -l "$FILE"`.


12
2017-10-10 09:32



لمشاهدة الدلائل ومحتوياتها بدلاً من ملف واحد: NEW=`tree -sDct . -I 'ignore_pattern|another_pattern'` - Andy


يمكنك استعمال ال tailf  قيادة أسهل واحد جدا

tailf logfile.log

7
2017-10-15 13:26





يمكنك أيضا استخدام inotifywatch / inotifywait التي ربط في النظام الفرعي inotify inotify. بهذه الطريقة ، يمكنك أيضًا مشاهدة أشياء مثل "open" أو "close" أو "access".

ولكن إذا كنت ترغب ببساطة في الحصول على خطوط ملحقة بـ stdout ، فأنا أوافق على الذيل.


5
2018-04-30 22:40