שאלה הפקודה Shell כדי לפקח על השינויים בקובץ - מה זה נקרא שוב?


אני יודע שיש פקודה על יוניקס, כי אני יכול להשתמש כדי לפקח על קובץ ולראות שינויים שנכתבים אליו. זה היה די שימושי במיוחד לבדיקת קבצי יומן.

האם אתה יודע איך זה נקרא?


139
2018-04-30 21:00






תשובות:


האם אתה מתכוון

tail -f logfile.log

?

(דף גבר לזנב)


188
2018-04-30 21:01



כן, זה בזמן אמת. - Adam Gibbins
סידן: אם ההפצה שלך מספקת את הפקודה tailf, השתמש בהעדפה לזנב -f. tailf הוא יעיל יותר כי זה לא צריך לגשת לקובץ שנצפה אם זה לא נכתב (גישות סקר הם מעצבנים אם רכוב מערכת הקבצים עם עדכון Atime.) - 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


כנראה התכוונת לזנב, לפי תשובתו של ג'ון סקיט.

עוד אחד שימושי הוא שעון; זה מאפשר לך להפעיל פקודה מעת לעת ולראות את הפלט מסך מלא. לדוגמה:

watch-10 -d ls -l / var / adm / messages

יפעיל את הפקודה ls -l /var/adm/messages כל 10 שניות, ולהאיר את ההבדל בפלט בין הרצים הבאים. (שימושי לצפייה כמה מהר logfile גדל, למשל).


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♦
למעשה, אתה צריך בדרך כלל מעדיפים פונקציות פגז מעל כינויים ברוב המקרים. - tripleee


inotifywait מ inotify-tools הוא שימושי אם אתה רוצה להפעיל פקודה בכל פעם קובץ (או כל הקבצים בספרייה) לשנות. לדוגמה:

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 logfile.log

7
2017-10-15 13:26