我希望我的服务器每分钟都执行一个节点脚本.如果我手动执行文件(./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);
Run Code Online (Sandbox Code Playgroud)
知道为什么我会收音机沉默吗?在其他地方我应该调试?
更新:
我认为问题与我的相对文件路径有关,而main.js是从它自己的目录外执行的.
所以现在,我已经放在exe.sh了wudu目录中.它看起来像这样:
#!/bin/bash
cd ${0%/*}
./main.js mail
exit
Run Code Online (Sandbox Code Playgroud)
现在,我已经设置了cron来每分钟执行一次这个文件.我尝试从其他文件夹执行此文件,它按预期工作.但同样,cron并没有把它拿起来.
Mar*_*ith 10
将执行包装在shell脚本中,可能是cron中脚本的执行与从命令行运行时的环境设置不同.
尝试在cron中使用设置NODE_PATH&来执行shell脚本的执行PATH
(如果需要这些值,请在命令行上输入:echo $NODE_PATH和echo $PATH)
所以,你的cron条目看起来像:
*/1 * * * * NODE_PATH=/usr/local/lib/node_modules PATH=/opt/local/bin:ABC:XYZ /home/bryce/scripts/wudu/exe.sh
Run Code Online (Sandbox Code Playgroud)
只需确保将NODE_PATH&的实际值替换为PATH您从echo第一次执行的命令中获得的值.
| 归档时间: |
|
| 查看次数: |
6477 次 |
| 最近记录: |