使用 Wget 定時執行遠端的網站程式

隨著網站程式 (如 ASP、JSP、PHP、Perl…) 的應用愈來愈多,有些程式必須定時執行。而網站程式並不像一般應用程式可以輕鬆的定時執行。


Wget 原本是設計來透過 HTTP、HTTPS、FTP 等網路協定來抓取檔案的,Linux 大部份也都有內建這個套件。如果在 Linux 下拿來搭配 crontab 就能達到定時執行某個網站程式的功能,也不用額外安裝任何的程式。

*/5 * * * * wget -qO – http://{SERVER NAME}/refresh.php

(crontab 範例,每5分鐘執行一次)

這個參數會讓 Wget 把抓取下來的檔案顯示在螢幕上,而不會寫入到檔案。只是要注意一下安全性的問題,不要讓阿貓阿狗都能執行。

(2006.07.14 補充說明)
如果程式需要做參數傳遞的話,使用 Querystring (Form GET) 時在記得在網址頭尾加上單引號,因為 & 符號是 Linux 背景執行用的保留字。另外 Wget 也有提供 POST 字串傳值跟 POST 檔案二種方式,可以參考一下:

–post-data=STRING use the POST method; send STRING as the data.
–post-file=FILE use the POST method; send contents of FILE.

註: Wegt 也有編譯好的 Windows 版本可以自行搭配使用。

延伸閱讀:
Wget 參數說明 (中文)
鳥哥: ctrontab 的設定方式

9 comments On 使用 Wget 定時執行遠端的網站程式

  • 如果在第5分鍾抓100個IP,是同時開100支wget呢
    或者是第一個IP抓完,換第2個IP呢?
    */5 * * * * wget -qO – http://220.134.71.1
    */5 * * * * wget -qO – http://220.134.71.2
    ….
    */5 * * * * wget -qO – http://220.134.71.100
    請解答

  • 前者可能會先受限於自己的頻寬不夠, 反而拖慢速度, 後者 wget 有參數(如果我沒記錯的話應該是 -i )可以配合一個 anyname.txt 純文字檔案, 依照檔案內部寫入的 URL 順序執行任務.

  • 如果在第5分鍾抓100個IP,是同時開100支wget呢
    或者是第一個IP抓完,換第2個IP呢?
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    路過吐個嘈
    這問題沒前沒後的,看都看不懂,大家要怎麼回答呢??
    第5分鍾抓100個IP?? what the hell was that?

  • 在crontab檔寫了以下的設定
    */5 * * * * wget -qO – http://220.134.71.1
    */5 * * * * wget -qO – http://220.134.71.2
    ….
    */5 * * * * wget -qO – http://220.134.71.100
    假設wget抓一個IP花約5秒,那麼
    請問在第5分鍾時是同時100個ip一起抓呢或是
    5:00:00抓第一個IP
    5:05:00抓第二個IP
    …..以此類推

  • 印象中 cron 會排序執行,不會同步,也就是一個抓完才換下一個。嗯,印象中…..

  • 我印象中, 記得 wget 只有抓取遠端檔案的用途, 並沒有辦法執行遠端(或者應該是說觸發)特定檔案或程式的用途. 嗯! 印象中 ……… XD

  • yesYouDo:
    如果你希望同時執行的話,可以試試 wget 的 -b 參數。(在 Linux 下可以背景執行,但不適用Windows)

    randy:
    抓取網站程式檔案就是一種觸發的方式喔。^^

  • NEO大開頭就說過.Wget 原本是設計來透過 HTTP、HTTPS、FTP 等網路協定來抓取檔案的.
    只是被我們取巧.剛好轉來當成WEB界面AP的觸發程式.如.你要定時去抓取某些網頁資料回來分析.就可以用這方法.

    不過.後來我們直接改用PHP當SHELL.然後再用crontab去定時執行.效果也不錯.

  • 正好有個問題可以用這個方法解決,真是謝謝 neo 大

Leave a reply:

Your email address will not be published.

Site Footer

Sliding Sidebar