Существует ли 'хвост-f' эквивалентен для того, когда файл перезаписывается (вместо добавленного к)?

Системные переменные - сохраненные в:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

Переменные <ПО УМОЛЧАНИЮ> - сохраненные в:

HKEY_USERS\.DEFAULT\Environment

.DEFAULT пользователь не является настройками по умолчанию, которые создаются, когда профиль пользователя создается впервые. Скорее.DEFAULT является средой HKEY_CURRENT_USER, используемой контекстом защиты LocalSystem.

Вот некоторый фон из блога Raymond Chen, чтобы дать моему ответу некоторое addt'l доверие: http://blogs.msdn.com/oldnewthing/archive/2007/03/02/1786493.aspx> улыбка <

6
задан 25 February 2010 в 19:47
5 ответов

Можно использовать часы для повторения выполнения команды, таким образом, в случае

watch -n 1 cat filename
5
ответ дан 3 December 2019 в 00:23
  • 1
    Этот won' t работают над FreeBSD (или где угодно watch isn' t, чем Вы ожидаете, что это будет), также если файл будет вращаться быстрее, чем каждый -n секунды you' ll пропускают материал... –  voretaq7 25 February 2010 в 19:03
  • 2
    И наблюдайте doesn' t, кажется, находятся на Mac OS X. (Не 10.5.8, по крайней мере.) –  Daryl Spitzer 25 February 2010 в 19:44
  • 3
    Это работает отлично на Linux все же. –  Daryl Spitzer 25 February 2010 в 19:48
  • 4
    Я не доверил бы любому решению, которое включает фиксированные интервалы синхронизации (watch -n, что-либо с sleep, linux tail с -s > 0). That' s также не принимающий во внимание мое возражение на любое решение это " только продолжает работать [вставляют платформу] " –  voretaq7 25 February 2010 в 20:49

Вы могли использовать API FSEvents и маленький сценарий для контроля файла (или более точно каталог, который содержит файл).

0
ответ дан 3 December 2019 в 00:23

Существуют лучшие способы сделать это, но это будет работать

  while true ; do echo -n "`date +%s:` " >> file.log ; cat file >> file.log  ; done 

Файл file.log вырастет... быстро...

Если Вы нуждаетесь в большем количестве функций, любите проверять, чтобы видеть, равно ли содержание файла предыдущему содержанию, можно развернуть это в сценарий. Просто комментарий ниже и я помогу.

1
ответ дан 3 December 2019 в 00:23

В системах BSD (и я верю большинству других систем), tail -f сбросит к началу файла, если он будет видеть, что файл был усеченным (это походит точно на поведение, которое Вы хотите).

В системах Linux происходит то же самое, но по крайней мере в поле Debian у меня есть наложение вокруг хвоста, имеет "интервал опроса", таким образом, необходимо сказать этому не спать между проверками файла (tail -s 0 -f ...) чтобы это заметило усечение, в других отношениях странные вещи происходят (если файл является тем же размером или меньший, когда это выписано, Вы не получаете вывода, если это больше, Вы получаете все после того, как текущий маркер количества байта хвоста, и т.д. - играют с Вашим хвостом impementation, чтобы видеть, как это ведет себя),


Как альтернатива и на Linux и на системном хвосте BSD имеет a -F опция (который похож -f но проверки, чтобы видеть, был ли файл повернут - т.е. имя, указывают на другое inode число). Это не поможет Вам, если файл будет усеченным в противоположность unlink'd и замененный все же.

1
ответ дан 3 December 2019 в 00:23
  • 1
    хвост на Mac OS X (10.5.8) doesn' t имеют-s опцию. –  Daryl Spitzer 25 February 2010 в 19:45
  • 2
    Хвост Mac OS X, кажется, имеет семантику BSD-стиля (-f прекрасное усечение дескрипторов,-F дескрипторы удалил/воссоздал файлы), –  voretaq7 25 February 2010 в 20:42
  • 3
    Также не очевидный из моего ответа или комментариев, но -F включает ту же семантику усечения как -f. это просто следует имя вместо inode –  voretaq7 25 February 2010 в 20:51

Бедный человек watch:

while true
do
    clear
    cat file
    sleep 1
done

Изменитесь cat если файл длиннее, чем экранное к чему-то как:

tail -n $((LINES - 4)) file

Вы могли добавить условные выражения для проверки для разнообразия в метку времени файла и т.д.

1
ответ дан 3 December 2019 в 00:23

Теги

Похожие вопросы