Is there a way to tail a resource such as http://someserver.com/logs/server.log ?

This is what I would do for a local file.

tail -F /var/logs/somefile.log

I would like something similar to that for a file accessed through the http protocol

  • 1
    No. Theoretically, you could hack something together using byte offsets and curl or wget, but it'd be horrible. What are you trying to achieve? Perhaps there's a better way, – SmallClanger Apr 25 '13 at 13:08
  • I have a logfile on a url which is my only way to access it. I want a nice way to view it in real-time – Rythmic Apr 25 '13 at 13:21
  • Go for Log Management tools like Logstash ,Awstats, Webalyzer or Splunk.. – Abhishek Anand Amralkar Apr 25 '13 at 13:35
  • I home somebody already tested url-tail – Jin Kwon Jan 13 '15 at 6:47

You might use the script from https://stackoverflow.com/a/1102346/401005 if you are able to run php scripts. You should add a flush(); after the echo.

When using curl --no-buffer http://the/url you should have an suitable output

| improve this answer | |

This will do it:


trap 'rm $file' EXIT

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

tail -f "$file"

It's not very friendly on teh web-server. You could replace the true with sleep 1 to be less resource intensive.

Like tail -f, you need to ^C when you are done watching the output, even when the output is done.

| improve this answer | |

I'm trying htail (https://github.com/vpelletier/htail) and it seems to do the job pretty well.

| improve this answer | |

If you want a sentinel program type like I needed ( only update when you respond )


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

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

Then run curlTail.sh http://wherever

You'll get

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

When you hit y, it'll curl it, then prompt you again.

| improve this answer | |

I wrote a simple bash script to fetch URL content each 2 seconds and compare with local file output.txt then append the diff to the same file

I wanted to stream AWS amplify logs in my Jenkins pipeline

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

don't forget to create empty file output.txt file first

: > output.txt

view the stream :

tail -f output.txt

Better solution:

I found better solution using wget here:

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


| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.