2014-12-23 105 views
0

經過apache重建我的cron職位停止工作。 我用下面的命令:如何使用curl命令設置cron?

wget -O - -q -t 1 http://example.com/cgi-bin/loki/autobonus.pl 

現在我的DC支持建議我到wget方法更改爲curl。在這種情況下,正確的價值是什麼?

+0

如果你運行th e命令手動? 'wget'應該覆蓋你的需求。嘗試運行它而不使用'-q'選項來獲得更詳細的輸出。 – fejese

+0

如果我在瀏覽器中運行http://example.com/cgi-bin/loki/autobonus.pl,一切正常。在沒有-q的情況下更改爲wget。發生以下錯誤:正在解析example.com ... 127.0.0.1 正在連接到example.com | 127.0.0.1 |:80 ...已連接。 HTTP請求已發送,正在等待響應... 404未找到 2014-12-23 07:38:01錯誤404:未找到。 – user3062493

+0

您的網絡服務器只能在公用IP上而不是本地主機上偵聽該虛擬主機。所以當你使用帶外部IP的域時,它可以工作,但是在服務器上'/ etc/hosts'文件中可能會有一個指向127.0.0.1的條目。你可以檢查嗎? – fejese

回答

0

-O -相當於curl的默認行爲,所以很容易。

-q是捲曲的-s(或--silent

--retry N將取代wget-t N

總而言之:

curl -s --retry 1 http://example.com/cgi-bin/loki/autobonus.pl 
+0

我試過這個命令,它不起作用:(然後我刪除了-s。發生以下錯誤:curl:(56)從對等端接收數據時失敗 – user3062493

0

嘗試運行帶有wget的

的完整路徑變化
/usr/bin/wget -O - -q -t 1 http://example.com/cgi-bin/loki/autobonus.pl 

,你可以找到的完整路徑:

which wget 

多,檢查是否能達到用ping或其他方式的目標域:

ping example.com 

更新:

根據意見,似乎是由/ etc/hosts中的行引起的:

127.0.0.1 example.com #change example.com to the real domain 
+0

根據你的評論,你可能在/ etc/hosts中有一個記錄,域指向127.0.0.1,因此得到404響應 – Lax

+0

該網站工作正常,只是ping了它。下面是我得到的:解決example.com ... 127.0.0.1 連接到example.com | 127.0.0.1 |:80 ...已連接 發送HTTP請求,正在等待響應... 404未找到 2014-12-23 07:44:01錯誤404:未找到 – user3062493

+0

那麼我應該寫什麼來代替127.0.0.1? – user3062493

0

看來你有限制的選項,在cron應該運行的服務器上,你的域名被固定爲127.0.0.1,但虛擬主機配置不能使用它。

你可以做的就是讓wget通過IP連接,但發送Host頭,這樣的虛擬主機匹配會的工作:

wget -O - -q -t 1 --header 'Host: example.com' http://xx.xx.35.162/cgi-bin/loki/autobonus.pl 

更新

也可能是你並不需要通過網絡服務器運行,所以爲什麼不運行:

perl /path/to/your/script/autobonus.pl 
+0

這是我獲得:連接到xx.xx.35.162:80 ...已連接。 發送HTTP請求,等待響應...沒有收到數據。 放棄。 – user3062493

+0

然後它肯定是某種網絡問題。也許你需要使用內部IP。運行'ip addr | grep -oP'inet \ K [0-9。] +''並從那裏嘗試地址。 – fejese

+0

好吧,其實xx.xx.35.162是否存在,還有127.0.0.1 – user3062493