Node.js脚本不是从crontab执行的

时间:2011-08-25 16:40:56

标签: node.js cron crontab

我有一个crontab条目,应该像这样执行node.js脚本:

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

但是,它不会执行,并且不会更新日志文件。当我手动运行脚本时,一切正常。任何想法??

谢谢你, 伊戈尔

6 个答案:

答案 0 :(得分:16)

我也有这个问题。似乎在我们的服务器上进行系统更新后,节点二进制文件的链接已从PATH消失。因此,在这种情况下,最好的解决方案始终不是node script.js,而是二进制的完整路径,在我们的例子中是/usr/local/bin/node script.js

答案 1 :(得分:8)

我最近遇到了同样的问题,并且能够在以下博客文章的帮助下解决它。

基本上,将完整路径放在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/

答案 2 :(得分:3)

尝试使用以下命令创建脚本:

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

答案 3 :(得分:2)

我在Linux中使用nvm install node.js,似乎crontab不知道路径,所以我写了节点的完整路径来执行节点文件。

* * * * * /home/www/.nvm/versions/node/v8.11.1/bin/node /home/www/ss-config/index.js

答案 4 :(得分:2)

here上有很好的解释。

如果您的二进制文件(在这种情况下为节点)位于/ usr / local / bin下,则可能发生这种情况。默认情况下,crontab在/ usr / bin或/ bin下查找二进制文件。

答案 5 :(得分:0)

尝试从提示符处实际运行命令>然后点击端点并查看捕获消息。

对我来说第一步

/usr/bin/node /var/www/iiiiii.net/server.js

然后使用浏览器或邮递员点击端点(或网址)。

我遇到以下错误,因为从crontab运行时,我的配置未获取.env凭据。

 Access denied for user ''@'localhost' (using password: NO)

可能有许多错误-但是,如果以这种方式进行测试,它将显示您的特定错误。