Есть ли способ выполнить хвост -f из URL-адреса?

В настоящее время я использую tail -f для мониторинга файла журнала: таким образом я получаю консоль автообновления, контролирующую веб-сервер.

Теперь указанный веб-сервер был перемещен на другой хост, и у меня нет для этого привилегий оболочки. Тем не менее, у меня есть сетевой путь .txt, который, в конце концов, представляет собой файл журнала, который постоянно обновляется.

Итак, я хотел бы сделать что-то вроде tail -f, но с этим URL. Возможно ли это? В конце концов, «в Linux все является файлом», так что ..


person Phate    schedule 08.07.2015    source источник
comment
Попробуйте это: superuser.com/questions/514066 /tail-f-эквивалент-для-URL   -  person Raphaël Gomès    schedule 08.07.2015


Ответы (2)


Вы можете сделать автообновление с помощью watch в сочетании с wget. Он не будет показывать историю, например tail -f, а будет обновлять экран, например top. Пример команды, которая показывает содержимое файла file.txt на экране и обновляет вывод каждые пять секунд:

watch -n 5 wget -qO-  http://fake.link/file.txt

Также можно вывести n последних строк вместо всего файла:

watch -n 5 "wget -qO-  http://fake.link/file.txt | tail"

В случае, если вам все еще нужно поведение типа «tail -f» (с сохранением истории), я думаю, вам нужно написать скрипт, который будет загружать файл журнала каждый период времени, сравнивать его с предыдущей загруженной версией, а затем печатать новые строки. Должно быть совсем легко.

person Dieselist    schedule 09.07.2015

Я написал простой скрипт bash для получения содержимого URL каждые 2 секунды и сравнения с локальным файлом output.txt, а затем добавления различий в тот же файл.

Я хотел транслировать журналы AWS amplify в свой конвейер Jenkins.

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

исходный комментарий: https://stackoverflow.com/a/62347827/2073339

ОБНОВЛЕНИЕ:

Я нашел лучшее решение, используя wget здесь:

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

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

person Khaled AbuShqear    schedule 12.06.2020