2016-09-20 82 views
2

我有一個TP鏈接射手C7與15.05混沌Calmer在家裏。wget沒有通過cronjob執行,但直接在控制檯

我想讓cronjob工作。它看起來像這樣:

* * * * * /usr/bin/wget --spider \"https://subdomain.domain.net/update.php\" >/dev/null 2>&1

不幸的是這並沒有得到執行。我也試過做* * * * wget -O - https://subdomain.domain.net/update.php同樣的結果。 如果通過控制檯直接輸入,則兩個版本都會正確執行。

最後的logread

Tue Sep 20 11:55:00 2016 cron.info crond[10317]: USER xxx pid 16697 cmd /usr/bin/wget --spider \"https://subdomain.domain.net/update.php\" >/dev/null 2>&1

線看起來是正確的?任何想法爲什麼它不通過cronjob執行?

+0

除去引號前的討厭反斜槓怎麼樣?或者也許整個\「一共? – gsl

回答

2

您的cron作業確實運行,但是wget會遇到錯誤。

也獲取日誌,i.s.o.重定向到/ dev/null,你不能使用/out.txt,因爲cron將不會對/有寫訪問權限,/tmp/wget.txt會做的很好。

wget命令也一樣,輸出存儲在哪裏?您應該使用-p <directory prefix>選項。

其次,如果數據已經在該目錄中,則可能需要使用-N,並且只下載較新的文件並覆蓋舊的文件。

第三,當所有工作都安靜地關閉wget輸出時,使用-q選項。

第四無法運行該腳本每分鐘* * * * *,因爲此前的跑步可能還沒有說完呢,見格式:

# ┌───────────── min (0 - 59) 
# │ ┌────────────── hour (0 - 23) 
# │ │ ┌─────────────── day of month (1 - 31) 
# │ │ │ ┌──────────────── month (1 - 12) 
# │ │ │ │ ┌───────────────── day of week (0 - 6) (0 to 6 are Sunday to 
# │ │ │ │ │     Saturday, or use names; 7 is also Sunday) 
# │ │ │ │ │ 
# │ │ │ │ │ 
# * * * * * command to execute 

對於測試的緣故,讓我們每天晚上運行它在1過了午夜。

備註:要真正使正確的,你應該使用一個腳本文件來執行,並在那裏把wget命令,那裏的腳本文件可以使一個鎖定的情況下,要經常執行此,請參閱here因爲這超出了這個問題/答案的範圍。

而5號:不需要逃避"\",即使這樣不需要",因此將其刪除。

結論,首先創建一個可以存儲數據的目錄,例如, /wget_data

mkdir /wget_data 
chmod 777 /wget_data 

然後調整自己的cron行中,添加-p <directory prefix>-N和調整執行格式:

1 0 * * * /usr/bin/wget -N -p /wget_data --spider https://subdomain.domain.net/update.php >/tmp/wget.txt 2>&1 

並重新啓動cron的,可以對不建議,不知道是什麼尚未使用。

也是明智將是在命令行第一個測試你的命令:

/usr/bin/wget -N -p /wget_data --spider https://subdomain.domain.net/update.php >/tmp/wget.txt 2>&1 

,然後cat /tmp/wget.txt,看看命令的工作,並ls /wget_data,看看wget的那樣收集數據。

0

主要的事情,你需要檢查:

  1. 如果crond的啓動和運行(頂部,PS-A)
  2. 如果crond的有足夠的權限來執行的wget(ls -l命令在/ usr/bin中)
  3. 如果wget沒有產生任何錯誤(不要丟棄輸出到/ dev/null,將它存儲在某個文件中,然後首先檢查 - 如果文件完全創建,如果不是 - 則檢查事物1和2,文件被創建並且有一些信息 - 這可能會有幫助)
  4. 與項目1和2相關。檢查用戶runnin g crond並嘗試使用此用戶執行命令。
  5. 嘗試執行不是wget,但一些命令,將寫入一些字符串到一些文件,並檢查它是否會工作。
+0

1.是的,2.它是(crontab),3.將輸出更改爲/out.txt,但該文件未創建,4. OpenWRT只有根用戶,5.你有一個應該工作的例子嗎? – PrimuS

+0

試試這個: 'echo「crontab工作」>> /tmp/out.txt' 文件/tmp/out.txt應該增加每分鐘增加「crontab工作「在那裏。 –