是否有可能通过节点启动并继续捕获某个bash输出的输出?例如:假设我运行了tail /some/file
,我怎样才能不断地收听每一行新的行,并对输出进行处理?从NodeJS捕获输出输出
回答
为了完整起见,我已经添加了这个答案也。
您可以使用child_process.spawn
来产生一个进程并监视它的输出。但是,对于像尾巴,猫等不能持续运行的命令,只需使用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
});
var spawn = require('child_process').spawn,
tail = spawn('tail', ['-f', '/tmp/somefile']);
tail.stdout.pipe(process.stdout);
child_process模块well documented
您还可以运行['exec'](http://nodejs.org/api/child_process_exec_command_options_callback),它会为您收集'stdout'和'stderr'的整个输出。对于像'尾巴'这样的例子,它可以很好地工作。 (如果你有一个连续运行的脚本,监视输出流是一个更好的选择) – 2012-07-13 16:13:27
是我的脚本是连续的,例如'tail'或Google App Engine的'dev_appserver.py'。我会测试这个并回复你。 – 2012-07-15 15:14:34
这将在Windows上工作吗? – ANinJa 2017-03-15 11:15:44
- 1. 从wget捕获python输出?
- 2. 从adb logcat捕获输出
- 3. 从Popen捕获输出
- 4. 捕获FFMPEG输出
- 5. pexpect捕获输出
- 6. 的Python:捕获从subprocess.call的输出与标准输出
- 7. 如何捕获输出?
- 8. 捕获MS SQL输出
- 9. 捕获Python脚本输出
- 10. 捕获log4J与grep输出
- 11. 捕获子进程输出
- 12. 捕获声音输出
- 13. 捕获标量输出
- 14. Java:捕获声音输出
- 15. 红宝石:捕获输出
- 16. “捕获”过程输出
- 17. 捕获SysLogHandler的输出
- 18. vmc apps捕获输出
- 19. 如何捕获GroovyShell输出?
- 20. RDotNet ICharacterDevice捕获输出
- 21. install.packages的捕获输出
- 22. 正确捕获Jython输出
- 23. LINQPad的捕获输出
- 24. php:捕获命令输出
- 25. 捕获的bash输出
- 26. 捕获程序输出
- 27. 捕获输出命令CMD
- 28. 从Selenium和Python捕获输出
- 29. 从python子进程捕获输出
- 30. 从shell调用python并捕获输出
那么,你需要附加到过程的标准输出......不知道你是否可以从node.js做到这一点。 – Bobby 2012-07-13 07:33:06
@Bobby是的,你可以,事实上很容易。参见'child_process'模块。 :) – 2012-07-13 16:12:45