我可以 tail 一个 http 资源吗?

我可以 tail 一个 http 资源吗?

有没有办法跟踪诸如此类的资源http://someserver.com/logs/server.log

这就是我对本地文件所做的事情。

tail -F /var/logs/somefile.log

我想要类似于通过 http 协议访问的文件

答案1

我写了一个简单的 bash 脚本,每 2 秒获取一次 URL 内容,并与本地文件进行比较,output.txt然后将差异附加到同一个文件中

我想在 Jenkins 管道中传输 AWS 放大日志

while true; do comm -13 --output-delimiter="" <(cat output.txt) <(curl -s "$URL") >> output.txt; sleep 2; done

不要忘记output.txt先创建空文件

: > output.txt

查看流:

tail -f output.txt

更好的解决方案:

我在这里找到了使用 wget 的更好的解决方案:

while true; do wget -ca -o /dev/null -O output.txt "$URL"; sleep 2; done

https://superuser.com/a/514078/603774

答案2

这将做到这一点:

#!/bin/bash

file=$(mktemp)
trap 'rm $file' EXIT

(while true; do
    # shellcheck disable=SC2094
    curl --fail -r "$(stat -c %s "$file")"- "$1" >> "$file"
done) &
pid=$!
trap 'kill $pid; rm $file' EXIT

tail -f "$file"

它对网络服务器不太友好。你可以用 替换truesleep 1减少资源消耗。

就像,当您观看完输出后,即使输出已经完成,tail -f您也需要这样做。^C

答案3

我想htailhttps://github.com/vpelletier/htail),而且它似乎做得很好。

答案4

如果您想要像我一样的哨兵程序类型(仅在您回复时更新)

#!/bin/bash

while true; do
    echo "y to curl, n to quit"
    read -rsn1 input

    if [ "$input" = "y" ]; then
        curl $1
    elif [ "$input" = "n" ]; then
        break
    fi
done

然后运行curlTail.sh http://wherever

你会得到

18:02:44] $: ~ \> curlTail.sh http://wherever
y to curl, n to quit

当您按下 y 时,它会卷曲它,然后再次提示您。

相关内容