Articles of 标准输出

截断将STDOUTredirect到的文件

我有一个节点应用程序,它的STDOUT被redirect到一个日志文件: node app.js > /var/log/app.out 从我的节点程序中,我想重置日志,以防止它变得太大。 我已经尝试了fs.truncate和fs.open('/var/log/app.out', 'w')来重置它的长度,但是当我尝试使用ls或stat来validation文件大小时,文件大小似乎很快重置为0,然后重置为它以前的大小加上新的消息(我目前正在逼迫大量的输出)。 root@ubuntu-1304-mike:/var/log# stat app.out File: 'app.out' Size: 5885622 Blocks: 16 IO Block: 4096 regular file Device: fc00h/64512d Inode: 270560 Links: 1 Access: (0644/-rw-r–r–) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2013-09-26 17:20:06.784564421 -0600 Modify: 2013-09-26 17:20:49.088565625 -0600 Change: 2013-09-26 17:20:49.088565625 -0600 Birth: – root@ubuntu-1304-mike:/var/log# stat app.out […]

nodejs删除stdout行

您可以使用process.stdout模块删除单个字符 ,但是如何删除整行而不必打印单独的空格?

NodeJS – 将命令行输出存储为var,并通过res.send()将其返回给客户端

我目前正在使用NodeJS在应用程序的后端工作。 作为我的代码的一部分,我读了一个文件的第一行,并使用res.json发送到客户端。 我的代码看起来像这样 var hr = 'head -n 1 ../' + req.file.path + '_hr.txt'; exec(hr, function (error, stdout, stderr) { console.log(hr); console.log(stdout); console.log(stderr); res.json({ "heartrate": stdout }); }) 当我执行这个,但是我得到 {"heartrate" : ""} 即使在后端的控制台上,我也会看到stdout的值。 我已经看了其他相关的问题,但我得到的信息是零碎的。 我意识到stdout产生的对象不是一个string。 我尝试了toString()方法,但没有奏效。 因为exec是asynchronous的,所以我还在res.json中放了一个if(stdout),可能stdout在我调用console.log(stdout)的时候可能没有被写入,但是这也不起作用。 我也尝试使用产卵而不是执行无效,虽然我可能错误地使用它。 我相信我的问题的解决scheme非常简单,但我一直无法find它。 任何帮助将不胜感激!

无法从subprocess的标准输出中获取任何内容

我试图做一个非常简单的nodejs服务器,接收post请求,并将它们提供给一个简单的C程序,通过stdin和stdout使其所有的I / O。 我正在尝试使用以下脚本作为testing: var prc = require('child_process').spawn('./example'); // )none of these made it work) prc.stdout.setEncoding('ascii'); //prc.stdout.setEncoding('utf8'); prc.stdout.on('data', function (data) { console.log("child said something: " + data); }); prc.stderr.on('data', function (data) { console.log("stderr: " + data.toString()); }); prc.on('close', function (code) { console.log('process exit code ' + code); }); setInterval(function() { console.log("gonna write"); prc.stdin.write("prueba inicial\n"); console.log("wrote"); […]

将stdoutredirect到文件nodejs

我创造了: var access = fs.createWriteStream('/var/log/node/api.access.log', { flags: 'w' }); 然后pipe道: process.stdout.pipe(access); 然后尝试: console.log("test"); 并没有出现在/var/log/node/api.access.log。 但是,这种方式正在工作: process.stdout.pipe(access).write('test'); 有人可以解释我做错了什么?

节点中的错误,stderr,stdout有什么区别

我正在使用node.js并想要处理错误消息。 erro,stderr,stdout有什么区别? 当脚本shell,我redirectstderr,并发现有用的错误信息,并解决了问题。 我不清楚计算机的输出是什么types的概念。 任何人都可以用全面的方式解释吗? 谢谢。

在摩卡testing过程中将stdout和stderr静音

我会通过承认我可能正在做一些我不应该做的事情来做序。 但是既然我已经深深的了解了,我也可以理解为什么事情会这样发生。 我正在使用摩卡来testing一些Node.js代码。 此代码使用Winston日志库,它直接调用process.stdout.write()和process.stderr.write() ( source )。 它运作良好; 我对这种行为没有抱怨。 但是,当我对这段代码进行unit testing的时候,Mochatesting运行器的输出偶尔会穿插一些日志输出行,这在一些记者( dot , bdd )中是丑陋的,而在其他记者( bdd )中是彻头彻尾的无效的。 我想在不修改或inheritanceWinston的情况下阻止这个输出,而且我想避免修改应用程序本身,如果我可以避免的话。 我到达的是一组实用函数,它们可以用一个无操作函数暂时replaceNode的内build函数,反之亦然: var stdout_write = process.stdout._write, stderr_write = process.stderr._write; function mute() { process.stderr._write = process.stdout._write = function(chunk, encoding, callback) { callback(); }; } function unmute() { process.stdout._write = stdout_write; process.stderr._write = stderr_write; } 在各种testing规范中,我直接在产生不需要的输出的任何调用或断言之前调用了mute() ,并在之后直接unmute() 。 这感觉有点不好意思,但是工作起来 – […]

如何在terminal中编辑现有文本(并移动光标)?

我看过这个demo,打印出一段文字(就像inputsome-command –help时会得到的那样),然后跳回到文本中的几个关键字,然后改变文本的颜色已经在terminal打印出来了 。 这对我来说似乎很疯狂。 他们是怎么做到的? 开始思考,我猜stdout和stdin在技​​术上是一个“IOstream”,所以也许这是一个持续variables,跟踪光标的位置? 我记得在构build语言parsing器时做类似的事情。 目标是这样的:假设你在控制台中键入以下内容,并输出一个空白数组,因为在Node.js中,它们都是asynchronous的,我们不希望每次都在控制台中编写asynchronous函数: $ node app.js > App.User.all() => [] 然后当asynchronouscallback执行时,你回去编辑=> []来包含结果: $ node app.js > App.User.all() => [#<User id:1>, #<User id:2>…] 即使还有很多其他问题需要解决(至less与这个问题无关),而且我知道你可以定义一个全局的callbackApp.User.all(_c)像App.User.all(_c) )。 打印完成后如何编辑terminal输出?