【发布时间】:2017-04-27 22:09:47
【问题描述】:
我正在尝试在 Ubuntu 14.04 服务器上将节点脚本作为 CRON 作业运行。我正在使用nvm。
我试过了:
* * * * * /usr/bin/env node /var/www/apps/gmail-api/exe/m.js recent x@x.x
还有:
* * * * * node /var/www/apps/gmail-api/exe/m.js recent x@x.x
最后:
* * * * * ~/.nvm/bin/node-v6.6.0-linux-x64 /var/www/apps/gmail-api/exe/m.js recent x@x.x
都没有用。
但是,如果我运行:
node /var/www/apps/gmail-api/exe/m.js recent x@x.x
效果很好。
为什么 crontab 不运行我的脚本?
【问题讨论】:
-
确保您的 crontab 工作正常。你在 cron 的末尾有行尾吗? serverfault.com/questions/230370/…
-
您是否尝试了第三个示例中节点可执行路径的完整解析版本,而不是使其与
~相关? cron 不会以您的用户身份运行,因此~/.nvm无论如何都不存在。 -
cron 以您的用户身份运行不会有问题,但典型的情况是以 root 身份运行 cron 作业。在任何情况下,包括 $HOME 在内的大多数环境变量都不可用,因此
~字符的扩展将不起作用。 -
@Klodoma 我在 crontab 文件的末尾添加了新的空行。 @mscdex 我把线路改成
* * * * * /root/.nvm/bin/node-v6.6.0-linux-x64 node /var/www/apps/gmail-api/exe/m.js recent x@x.x还是不行