持續監控網頁伺服器(HTTP)並使用 min 下載新新增的檔案的最佳方法是什麼?延遲(最好延遲 < 1 分鐘)?
答案1
監控
首先,為了監控我建議您使用納吉奧斯,核心原始碼是免費的,但是如果你需要GUI,你應該付費,但是花那麼多錢是值得的。
Collectd(Collection Daemon)也是一個免費的監控工具,您可以yum
在 RHEL 衍生產品或apt-get
基於 Debian 的衍生產品上下載使用。你可以閱讀這張紙如果你想使用 Collectd。
任務每 x < 1 分鐘運行一次
對於問題的第二部分,每次 x 一次執行一項工作,其中 x 定期少於一分鐘,正如您所知,您不能使用 Cronjobs,因為您可以使用以下解釋的一些技巧吉爾斯 在這個問題中做你想做的事。
最好有一個滿足您需求的腳本,並永遠運行它,甚至在啟動時運行它(如果需要)。您可以使用如下所示的簡單語法:
while true; do yourJob; sleep someTime; done
或者,您甚至可以根據需要使用一些更複雜的腳本。
也可以使用watch
指令。例如:
watch -n1 command
它會運行你的command
每一秒,直到永遠。
watch
正如您可能已經猜到的那樣,如果您只需要每 x 次運行一個簡單的腳本(少於一分鐘)而不是複雜的腳本,那麼您也可以執行 shell 腳本。
這是你的選擇。
答案2
這取決於幾個因素。
如果您可以控制 Web 伺服器,最簡單的方法是安裝一個(RESTful?)服務,提供自上次檢查或下載以來變更的檔案數量。這最大限度地減少了客戶端和伺服器上的資料傳輸和負載。更重要的是,如果可以直接追蹤伺服器上檔案的上傳/修改,例如在上傳腳本中而不是依賴檔案系統。
如果是後者,我會研究一些文件監控解決方案,例如famd
.
如果您無法控制伺服器,則必須先進行修改才能下載它們。最簡單的事情是使用一些網路鏡像諸如 w3mir 之類的實用程序,因為它們已經負責檢查/提供 ETag 和 Last-Modified / If-Modified-Since 標頭。這意味著您必須發出更少的調用,因此能夠更頻繁地運行該實用程式。
至於如何要運行該實用程序,取決於它運行的位置。您可以在 Unix 機器上使用 cron 作業,或者只是循環運行它。
但是,如果您選擇前者,我們建議您安裝某種信號量,以防止鏡像程序在前一個實例終止之前啟動。它可以很簡單,只需建立一個鎖定檔案:
if [ -r /tmp/mirror.lock ]; then
echo "lock file found" | logger -t webmirror
exit 0
fi
touch /tmp/mirror.lock
...whatever...
rm /tmp/mirror.lock
但是您還必須收到catch
任何可能終止腳本的訊號,否則在出現臨時錯誤的情況下,鎖定檔案可能會保留在那裡,並阻止所有其他實例運行,即使在錯誤解決後也是如此。
或者,您可以驗證鎖定檔案是否不早於某個合理的數量,如果是,則將其刪除,或者驗證找到了多少個腳本實例ps
(通常是當前的一個;如果更多,則當前的實例最好abort),並且完全不使用鎖定檔案。
答案3
您可以curl
在 cron 作業中執行一個簡單的命令,但我建議您開始使用具有 Web 監視功能的監視解決方案。其中有很多是免費的,只需谷歌“開源網路監控解決方案”,你就會得到很多!