cron为什么不执行我的node.js脚本?
我希望服务器每分钟执行一次节点脚本。如果我手动执行文件(./main.js
),该程序将完美执行,因此,我很确定这不是问题。但是,当我将其交给cron执行时,什么也没发生。
这是cron文件中的行。
*/1 * * * * /home/bryce/scripts/wudu/main.js
这是一个示例日志:
Oct 11 15:21:01 server CROND[2564]: (root) CMD
(/home/bryce/scripts/wudu/main.js)
可执行文件: home/bryce/scripts/wudu/main.js
#!/usr/bin/env nodevar program = require('commander');
var v = require('./cli/validation');
var a = require('./cli/actions');
program
.version('0.0.1')
.option('-u, --url', 'Register url')
.option('-s, --selector', 'Register selector')
.option('-p, --pagination', 'Register pagination')
.option('-i, --index', 'Pass an index, to destroy')
.parse(process.argv);
var args = process.argv.slice(2),
mode = v.mode(args[0]),
options = v.hasArgs(mode, program);
a.init(mode, options);
知道我为什么要广播静音吗?我应该在其他地方调试?
更新:
我相信问题与我的相对文件路径有关,并且main.js从其自己的目录外部执行。
所以现在,我已经放置exe.sh
在wudu
目录中。看起来像这样:
#!/bin/bashcd ${0%/*}
./main.js mail
exit
现在,我将cron设置为每分钟执行一次此文件。我尝试从其他文件夹执行此文件,并且按预期工作。但同样,cron并没有接受它。
回答:
将执行结果包装在Shell脚本中,很可能在cron中执行脚本的环境与从命令行运行时所设置的环境不同。
尝试使用设置NODE_PATH
&PATH
(在命令行中输入:echo $NODE_PATH
和echo $PATH
)来设置cron中shell脚本的执行开头。
因此,您的cron条目将如下所示:
*/1 * * * * NODE_PATH=/usr/local/lib/node_modules PATH=/opt/local/bin:ABC:XYZ /home/bryce/scripts/wudu/exe.sh
只要确保将NODE_PATH
&的实际值替换为PATH
您从echo
第一次执行的命令中获得的值即可。
以上是 cron为什么不执行我的node.js脚本? 的全部内容, 来源链接: utcz.com/qa/400891.html