2016-05-21 28 views
3

Ich möchte Node-Schedule verwenden, um ein bestimmtes Node-Skript zu einem bestimmten Zeitpunkt auszuführen. Kann ich in node.js so etwas tun?Run-Node-Skript aus einem Node-Skript

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'); 
    }); 
}); 

Nicht sicher, ob so etwas wie NodeShell existiert. Andere Alternativen wären zu begrüßen.

+1

Es gibt ein [Bündel] (https://nodejs.org/api/child_process.html#child_process_asy nchronous_process_creation) von Möglichkeiten, Prozesse in node.js zu erzeugen. –

+0

Wenn Sie keine neuen Prozesse mit 'child_process' Modul erstellen möchten, ist' vm' der Weg zu gehen: http://stackoverflow.com/a/8808328/405398 –

+0

warum nicht einfach nur erfordern. Das Ausführen des Node-Skripts macht keinen Sinn, aber einige Bashs oder andere Skripts sehen gut aus !!! – owaishanif786

Antwort

7

Sie haben mehrere Optionen, die alle in der docs for child_process aufgeführt sind. Kurz:

  • child_process.exec laicht eine Schale
  • child_process.fork Gabeln ein Knoten Prozess
  • child_process.spawn ein Prozess

Für Ihren Fall laicht, einen Knoten Skript ausführen Sie so etwas wie diese verwenden:

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));