Хвост -f эквивалент для URL

Я хочу отслеживать файл журнала моего приложения, который, однако, работает не локально, а на платформе SaaS и доступен через HTTP и WebDAV. Таким образом, эквивалент tail -f, который работает для URL-адресов, отлично подходит для меня.

PS Если вам известны какие-либо другие инструменты, которые могут отслеживать удаленные файлы через HTTP, это также может помочь. Спасибо

3 ответа

Решение

Для этого может быть специальный инструмент, но вы также можете сделать это с помощью wget. Откройте терминал и выполните эту команду:

while(1); do \
    sleep 2; \
    wget -ca -O log.txt -o /dev/null http://yoursite.com/log; \
done

Это будет загружать файл журнала каждые две секунды и сохранять его в log.txt добавление вывода к тому, что уже есть (-c означает продолжить загрузку и -a означает добавление вывода к указанному имени файла). -o перенаправляет сообщения об ошибках в /dev/null/,

Итак, теперь у вас есть локальная копия log.txt и вы можете запустить tail -f в теме:

tail -f log.txt 

Я ответил на тот же вопрос здесь полным сценарием оболочки, который принимает URL в качестве аргумента и tail -f 'сидеть. Вот копия этого ответа дословно:


Это сделает это:

#!/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 когда вы закончите смотреть вывод, даже когда вывод сделан.

Для достижения этого можно использовать локон с опцией диапазона в сочетании с часами:

ДИАПАЗОН

В HTTP 1.1 введены байтовые диапазоны. Используя это, клиент может запросить получение только одной или нескольких частей указанного документа. Curl поддерживает это с помощью флага -r.

watch -n <interval> 'curl -s -r -<bytes> <url>'

Например

watch -n 30 'curl -s -r -2000 http://yoursite.com/log'

Это будет извлекать последние 2000 байтов журнала каждые 30 секунд.

Примечание: для самозаверяющего https используйте опцию --insecure curl

Другие вопросы по тегам