đuôi -f tương đương với một URL


10

Tôi muốn theo dõi tệp nhật ký của ứng dụng của mình, tuy nhiên nó không hoạt động cục bộ mà trên nền tảng SaaS và được hiển thị qua HTTP và WebDAV. Vì vậy, một phần tương đương với đuôi -f hoạt động cho các URL sẽ giúp tôi rất nhiều.

PS Nếu bạn biết bất kỳ công cụ nào khác có thể giám sát các tệp từ xa qua HTTP, thì đó cũng có thể là trợ giúp. Cảm ơn


1
Nó được hiển thị dưới dạng văn bản thuần túy trên máy chủ từ xa hoặc dưới dạng html?
terdon

Văn bản thuần túy với định dạng cụ thể: [dấu thời gian] Error_name ..... Sau đó tôi có ý định lọc qua grep
munch

Bạn có thể sử dụng wget -N http://somewhere/something, đó sẽ chỉ tải xuống tệp nếu nó mới hơn tệp bạn đã tải xuống trước đó hoặc sử dụng wget -O - http://somewhere/somethingđể chuyển hướng tệp đến thiết bị xuất chuẩn.
tuần

Câu trả lời:


11

Có thể có một công cụ cụ thể cho việc này, nhưng bạn cũng có thể làm điều đó bằng cách sử dụng wget. Mở một thiết bị đầu cuối và chạy lệnh này:

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

Điều này sẽ tải xuống logfile cứ sau hai giây và lưu nó vào log.txtnối thêm đầu ra với những gì đã có ( -ccó nghĩa là tiếp tục tải xuống và -acó nghĩa là nối thêm đầu ra vào tên tệp đã cho). Các -othông báo lỗi chuyển hướng đến /dev/null/.

Vì vậy, bây giờ bạn có một bản sao log.txt cục bộ và có thể chạy tail -ftrên nó:

tail -f log.txt 

Tôi phát hiện ra rằng tôi có thể sử dụng davfs2 để tích hợp với giao diện webDAV và sau đó sử dụng tệp như một tệp thông thường. Đây là những gì tôi thực sự mong đợi. Nhưng giải pháp của bạn đơn giản hơn và thực sự hiệu quả
munch

Tôi thấy rằng mọi thứ đang được lưu trong tệp "log" chứ không phải "log.txt". Trong trường hợp của tôi, điều này hoạt động: wget -ca -O log.txt -o / dev / null yoursite.com/log
yatsek

@munch davfs2 không hoạt động tốt. Trong trường hợp của tôi, tôi thấy rằng tail -fkhông cập nhật thay đổi tệp trừ khi có một số quy trình khác chủ động yêu cầu máy chủ cập nhật thư mục ( lscó vẻ như đủ). Vấn đề là tail -fphụ thuộc vào inotify, và inotify dường như không hoạt động trên davfs2.
jesjimher

@jesjimher tailkhông phụ thuộc vào inotify. Nó chỉ đơn giản là đọc các tập tin, tìm kiếm lại và đọc lại. Nếu nó không hoạt động tốt với davfs, điều đó sẽ phụ thuộc vào cách thức hoạt động của davfs. Có lẽ, nó chỉ cập nhật thông tin khi một cái gì đó đang tích cực đọc thư mục và vì tailgiữ cho tệp mở, điều đó không kích hoạt nó. Hoặc một cái gì đó dọc theo các đường dây.
terdon

Theo như tôi hiểu mã đuôi, nó không phải là một sự phụ thuộc, nhưng nó sử dụng inotify nếu nó có sẵn, chỉ dùng đến hành vi bỏ phiếu nếu không có sẵn inotify trong hệ thống. Vì davfs không thể biết khi nào tệp thay đổi mà không thực hiện yêu cầu rõ ràng, không có sự kiện inotify nào được tạo cho đến khi một số quy trình khác yêu cầu làm mới thư mục. Sẽ thật tuyệt nếu đuôi có một số cách để bỏ phiếu, ngay cả khi có sẵn inotify, nhưng tôi không tìm thấy thông số như vậy.
jesjimher

3

Tôi đã trả lời câu hỏi tương tự ở đây với một tập lệnh shell hoàn chỉnh lấy URL làm đối số và tail -fđó là tập lệnh. Đây là một bản sao của câu trả lời nguyên văn:


Điều này sẽ làm điều đó:

#!/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"

Nó không thân thiện lắm trên máy chủ web. Bạn có thể thay thế truebằng sleep 1để ít tốn tài nguyên hơn.

Giống như tail -f, bạn cần phải ^Cxem xong đầu ra, ngay cả khi đầu ra đã hoàn thành.


0

curl với tùy chọn phạm vi kết hợp với đồng hồ có thể được sử dụng để đạt được điều này:

CÁC DÃY

HTTP 1.1 giới thiệu phạm vi byte. Sử dụng điều này, một khách hàng có thể yêu cầu chỉ nhận một hoặc nhiều phần con của một tài liệu được chỉ định. Curl hỗ trợ điều này với cờ -r.

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

Ví dụ

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

Điều này sẽ lấy 2000 byte cuối cùng của nhật ký cứ sau 30 giây.

Lưu ý: đối với sử dụng https tự ký - tùy chọn curlure

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.