这可能很明显,但我很难找到解决方案。
// watch.js
var fs = require('fs');
function watch(dir, config) {
fs.watch(dir, {
persistent: true,
recursive: true
}, (event, filename) => {
if (filename) {
console.log(`filename changed: ${filename}`);
// do something
}
});
}
module.exports = watch
我想在后台运行此watch
,例如nohup
,我查看了child_process.spawn
,但仍然无法弄清楚用法。
根据文档child_process.spawn
期望command
作为参数。
任何指针我怎么能实现它?
目标是观察目录中的背景变化并执行一些操作。
谢谢!
答案 0 :(得分:0)
如果您想使用spawn,可以将 watch 进程拆分为自己的脚本,然后从主脚本中生成它。然后让主脚本监视输出。
这是考虑到你的 watch 函数不需要知道调用过程中发生的任何事情。
watcher.js
var fs = require('fs');
function watch(dir, config) {
fs.watch(dir, {
persistent: true,
recursive: true
}, function(event, filename) {
if (filename) {
console.log("filename changed: " + filename); //to stdout
}
});
}
watch('./watchme/'); //<- watching the ./watchme/ directory
main.js
const spawn = require('child_process').spawn;
const watch = spawn('node', ['watcher.js']);
watch.stdout.on('data', function(data) {
console.log("stdout: " + data);
});
watch.stderr.on('data', function(data) {
console.log("stderr: " + data);
});
watch.on('close', function(code) {
console.log("child process exited with code " + code);
});