有没有办法跟踪诸如此类的资源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
答案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"
它对网络服务器不太友好。你可以用 替换true
以sleep 1
减少资源消耗。
就像,当您观看完输出后,即使输出已经完成,tail -f
您也需要这样做。^C
答案3
我想htail
(https://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 时,它会卷曲它,然后再次提示您。