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 node

var 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.shwudu目录中。看起来像这样:

#!/bin/bash

cd ${0%/*}

./main.js mail

exit

现在,我将cron设置为每分钟执行一次此文件。我尝试从其他文件夹执行此文件,并且按预期工作。但同样,cron并没有接受它。

回答:

将执行结果包装在Shell脚本中,很可能在cron中执行脚本的环境与从命令行运行时所设置的环境不同。

尝试使用设置NODE_PATHPATH

(在命令行中输入:echo $NODE_PATHecho $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

回到顶部