【问题标题】:Run node script from within a node script从节点脚本中运行节点脚本
【发布时间】:2016-05-21 00:57:50
【问题描述】:

我想使用 node-schedule 在某个时间运行某个节点脚本。我可以在 node.js 中做这样的事情吗?

var schedule = require('node-schedule');

//https://www.npmjs.com/package/node-schedule
var j = schedule.scheduleJob('00 00 22 * * *', function () {
    console.log('Running XX node.js script ...');

    NodeShell.run(__dirname + '\\XX.js', function (err) {
        if (err) throw err;
        console.log('finished');
    });
});

不确定是否存在类似NodeShell 的内容。其他替代方案将受到欢迎。

【问题讨论】:

  • 有一个bunch 在 node.js 中产生进程的方法。
  • 如果你不想使用child_process 模块创建新进程,vm 是要走的路:stackoverflow.com/a/8808328/405398
  • 为什么不直接使用 require。运行节点脚本没有意义,但是一些 bash 或其他脚本看起来不错!!!
  • 你为什么不能用 cronjob 来做这个?

标签: node.js shell


【解决方案1】:

您有多个选项,所有选项都列在docs for child_process 中。简要说明:

  • child_process.exec 生成一个外壳
  • child_process.fork forks 一个节点进程
  • child_process.spawn 产生一个进程

对于您的情况,要运行节点脚本,您可以使用以下内容:

var childProcess = require("child_process");
var path = require("path");
var cp = childProcess.fork(path.join(__dirname, "xx.js"));
cp.on("exit", function (code, signal) {
    console.log("Exited", {code: code, signal: signal});
});
cp.on("error", console.error.bind(console));

【讨论】:

    猜你喜欢
    • 2013-05-06
    • 2019-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-28
    • 1970-01-01
    • 2022-01-21
    • 2014-06-07
    相关资源
    最近更新 更多