是否可以使用节点启动并继续捕获某个bash进程的输出?例如:说我运行tail /some/file
,我怎样才能继续收听所有打印的新行并对输出进行操作?
答案 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
它就会捕获stdout
和stderr
的整个输出并给它一下子给你们。
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
});