nodejs - 查看后台更改的目录并执行某些操作

时间:2016-04-12 21:43:34

标签: node.js background-process watch spawn

这可能很明显,但我很难找到解决方案。

// 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作为参数。

任何指针我怎么能实现它?

目标是观察目录中的背景变化并执行一些操作。

谢谢!

1 个答案:

答案 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);
});