2011-08-25 55 views
0

執行我有一個應該執行這樣的node.js的腳本crontab條目:Node.js的腳本不是從crontab中

*/5 * * * * node /home/campaigns/reporting/UNIT_TESTS/testCron.js > /home/campaigns/reporting/UNIT_TESTS/cron.log

但是,它不執行和日誌文件ISN沒有更新。當我手動運行腳本時,一切正常。有任何想法嗎??

謝謝 伊戈爾

回答

1

嘗試製作一個腳本命令:

script.sh

#!/usr/bin/env sh 
node /home/campaigns/reporting/UNIT_TESTS/testCron.js > /home/campaigns/reporting/UNIT_TESTS/cron.log 

,然後補充說,到的cron:

*/5 * * * * /path/to/script.sh 

確保使腳本可執行(chmod +x script.sh

+1

嗯,這讓我往前走。但是,不是記錄到我的文件,而是在命令行上輸出以下內容: 「您在/ var/spool/mail/root中有新郵件」。另外,最好把節點的完整路徑放到bash腳本中(如我發現的那樣),如下所示:/ usr/local/bin/node –

+0

當我檢查/ var/spool/mail/root時,那麼它顯示一個錯誤: –

+0

錯誤...好吧我會咬...什麼錯誤? –

12

我也有這個問題。似乎在我們的服務器上進行系統更新後,節點二進制文件的鏈接從PATH消失。因此,在這種情況下最好的解決方案總是使用不是node script.js,而是完整的二進制路徑,在我們的例子中是/usr/local/bin/node script.js

5

我最近遇到了同樣的問題,並能夠在下面的博客文章的幫助下解決它。

從本質上講,把完整路徑節點,在cron作業文件:

/usr/local/bin/node /var/www/coffee.js

http://www.themechanism.com/voice/2012/08/28/getting-node-js-and-cron-to-play-nicely/

+0

該博客文章中的另一個有用的提示是爲您正在使用的節點模塊提供絕對路徑,而不是相對路徑。結合上述建議,解決了我的問題。 – nickcoxdotme