Я знаю, що в Unix була команда, яку я міг би використовувати для моніторингу файлу та перегляду змін, які в нього записуються. Це було дуже корисно, особливо для перевірки файлів журналів.
Ви знаєте, як це називається?
Я знаю, що в Unix була команда, яку я міг би використовувати для моніторингу файлу та перегляду змін, які в нього записуються. Це було дуже корисно, особливо для перевірки файлів журналів.
Ви знаєте, як це називається?
Відповіді:
tail -F
буде дотримуватися імен файлів, а не файлових об'єктів, що особливо корисно у випадку обертання файлу журналу.
tailf
тепер застаріле і tail -f
є безпечним. (підтвердьте це у вашій системі man tailf
.) Дивіться документацію: man7.org/linux/man-pages/man1/tailf.1.html
Ви, мабуть, мали на увазі хвіст, як відповів Джон Скіт.
Ще один корисний - годинник ; це дозволяє періодично запускати команду і бачити вихід на весь екран. Наприклад:
дивитися -n 10 -d ls -l / var / adm / messages
Виконуватиме команду ls -l /var/adm/messages
кожні 10 секунд та підкреслить різницю у виході між наступними прогонами. (Корисно для перегляду, як швидко зростає файл журналу, наприклад).
inotifywait
від inotify-tools корисно, якщо ви хочете виконувати команду щоразу, коли файл (або будь-які файли в каталозі) змінюються. Наприклад:
inotifywait -r -m -e modify /var/log |
while read path _ file; do
echo $path$file modified
done
path
не є найбільшим вибором для імені змінної. На zsh
, здається , що навколишнє середовище вари не чутливі до регістру. Для мене встановлення також path
спричиняє PATH
встановлення, і це в основному означає, що нічого не буде виконано, поки ви не виправите це. Увімкнено bash
, налаштування path
не впливає на PATH
.
Я вважаю за краще використовувати « less +FG
1 over», 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 для вказівки на це в коментарях.
alias
потрібні параметри, тому вам не доведеться вводити їх кожен раз.
Я редагував файл 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"`
.
NEW=`tree -sDct . -I 'ignore_pattern|another_pattern'`
ви можете використовувати команду tailf, її найпростішу
tailf logfile.log
Хвіст - це стандартний, традиційний, доступний скрізь unix інструмент. Трохи досконалішим інструментом є багатоповерхівка, яка може контролювати декілька файлів одночасно та робить підсвічування синтаксису.
Якщо я хочу мати змогу шукати навколо файлу на додаток до того, що його просто накреслити, я менше використовую команду "F".
Використовуючи хвіст, майте на увазі, що потрібні додаткові аргументи, якщо файл може перевертатися або замінюватися редагуванням (режим за замовчуванням для vim's: w).
хвіст -f призведе до того, що хвіст зберігає дескриптор файлу і дотримується його. Якщо файл буде замінено, дескриптор буде змінено. Перевага від слідування дескриптора файлу полягає в тому, що якщо файл буде перейменований, ви все одно будете слідувати за ним.
Хвіст --follow = зробить хвіст відслідковувати названий файл, періодично відкриваючи його, щоб побачити, чи він був замінений.
--retry - ще один корисний варіант, якщо ви хочете створити файл журналу, але файл ще не створений.
хвіст -F - це ярлик для - наступного = --повтори.
Забудьте "tailf", diff - команда, яку ви хочете. Ось хороший трюк, щоб спостерігати за різницями, як вони відбуваються в режимі реального часу (або закриття) між двома файлами або в одному файлі, який записується.
Ви можете використовувати ці методи для зміни поведінки будь-яким способом, наприклад, запису змін у файл для збереження запису. Пограйте з інтервалом перегляду чи іншими параметрами для команд нижче.
У вас є 1 файл, і ви хочете спостерігати, як в ньому вносяться зміни:
Тож ось що робити:
cp file file2
touch check-differences.sh
nano check-differences.sh
chmod 755 check-differences.sh
#!/bin/bash
diff file file2
cp file file2
watch ./check-differences
це буде оновлено кожні 2 секунди за замовчуванням. Отже, якщо вам потрібно повернутися і прочитати їх, тоді запишіть вихід diff у файл у сценарії.
або використовувати cron для регулярного запуску сценарію, якщо вам не потрібно бачити вихід.
Незважаючи на tail -f somefile.txt
прокручування нових даних, я іноді волію less +G somefile.txt
також переглянути патч останніх даних у файлі.