1

Могу ли я получить tail -f вывод с http://example.com?

Я хочу контролировать внешний файл JSON.

3 ответа3

2

Нет. Из справочной страницы (1):

   With  --follow  (-f),  tail  defaults to following the file descriptor,
   which means that even if a tail’ed file is renamed, tail will  continue
   to  track  its  end.   This  default behavior is not desirable when you
   really want to track the actual name of the file, not the file descrip-
   tor (e.g., log rotation).  Use --follow=name in that case.  That causes
   tail to track the named file  in  a  way  that  accommodates  renaming,
   removal and creation.

Это означает, что команда tail должна будет следовать за файловым дескриптором, чего не происходит, когда вы отправляете http-запрос. Ваша файловая система не знает, что удаленный (в том смысле, на который вы ссылаетесь) файл изменился. Чтобы заставить что-то подобное работать, вам понадобится утилита / скрипт, который опрашивает сервер через определенный интервал или использует что-то вроде веб-сокетов (если сервер это поддерживает).

0

Один из способов сделать это - запустить wget на целевом URL в цикле и хвосте, которые:

$ while :; do 
   wget -qO - http://example.com >> /tmp/foo; sleep 1; 
  done

Затем из другого терминала запустить

$ tail -f /tmp/foo
0

Чтобы использовать tail -f для интернет-файла, вам нужно, чтобы этот файл был локально читаемым и опрашиваемым. Один из способов сделать это - использовать HTTPFS, однако это не часто используемый или зрелый программный продукт.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .