捕获NodeJS的bash输出

时间:2012-07-13 07:22:40

标签: bash node.js

是否可以使用节点启动并继续捕获某个bash进程的输出?例如:说我运行tail /some/file,我怎样才能继续收听所有打印的新行并对输出进行操作?

2 个答案:

答案 0 :(得分:9)

var spawn = require('child_process').spawn,
    tail  = spawn('tail', ['-f', '/tmp/somefile']);
tail.stdout.pipe(process.stdout);

child_process模块​​是well documented

答案 1 :(得分:6)

为了完整起见,我也添加了这个答案。

您可以使用child_process.spawn生成进程并监视其输出。但是,对于像tail,cat等不能长时间或连续运行的命令,您只需使用child_process.exec它就会捕获stdoutstderr的整个输出并给它一下子给你们。

var cp = require("child_process");

cp.exec("tail /some/file", function (err, stdout, stderr) {
    // If an error occurred, err will contain that error object
    // The output for the command itself is held in stdout and stderr vars
});