tail -f, но сначала всасываю содержимое файла (он же `cat -f`)

9

Мне нужно отобразить весь файл, прежде чем отслеживать его для новых изменений, а не только последние 10 строк (да, я знаю, что это не хвост концептуально). Другими словами, что-то подобное cat -fсделало бы, если бы оно существовало. Человек Хвоста не дает мне никаких идей. Единственный вариант, который я вижу сейчас, - это как-то объединить все cat, кроме последних 10 строк, и вывод tail -f .

Любые намеки, пожалуйста?

ом Ном ном
источник
3
cat $f && tail -n0 -f $fприходит на ум, и проверка справочной страницы, на которую это похоже, tail -c0 -f $fможет также делать то, что вы хотите (и лучше, потому что это не создает условия гонки между двумя процессами, где записанные данные могут игнорироваться). У меня сейчас нет доступа к системе Linux, но кто из них делает то, что вы хотите?
CVn
Это полезно, и я только что добавил такую ​​функцию в язык программирования: «хвостовой поток», который может нормально читать файл от начала до конца, а затем в конце переходит в режим «tail -f», а также может заметить, что файл был заменен на более короткий или усеченный, и следуйте этому. Это необходимо для того, чтобы иметь возможность выполнять такие операции, как обработка существующих журналов (отследить отставание), а затем начать обработку новых записей.
Каз

Ответы:

14

Вот один из способов сделать это:

tail -f -n+0 /var/log/messages

Кажется, нет никакой разницы между a +0и a +1, так что это будет эквивалентно:

tail -f -n+1 /var/log/messages
SLM
источник
2
Соответствующая часть справочной страницы (за исключением случаев, когда люди набирают текст) ... -n, --lines = K выводит последние K строк вместо последних 10; или используйте -n + K для вывода строк, начинающихся с Kth
сумасшедший ежик