我有一个crontab条目,应该像这样执行node.js脚本:
*/5 * * * * node /home/campaigns/reporting/UNIT_TESTS/testCron.js > /home/campaigns/reporting/UNIT_TESTS/cron.log
但是,它不会执行,并且不会更新日志文件。当我手动运行脚本时,一切正常。任何想法??
谢谢你, 伊戈尔
答案 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)
可能有许多错误-但是,如果以这种方式进行测试,它将显示您的特定错误。