我可以tail -f
从中获得输出http://example.com
吗?
我想监控外部 JSON 文件。
答案1
不是。从 tail(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 请求时则不需要。您的文件系统不知道远程(就您所指的意义而言)文件已发生更改。要使类似的东西正常工作,您需要使用以特定间隔轮询服务器的实用程序/脚本或使用类似 websockets 的东西(如果服务器支持)。
答案2
实现此目的的一种方法是wget
循环运行目标 URL 并执行以下代码:
$ while :; do
wget -qO - http://example.com >> /tmp/foo; sleep 1;
done
然后从另一个终端运行
$ tail -f /tmp/foo
答案3
tail -f
若要在互联网文件上使用,您需要该文件可在本地读取和轮询。实现此目的的一种方法是使用超文本传输协议,但这不是一个常用或成熟的软件。