如何在node.js中以编程方式使用grep命令

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在node.js中以编程方式使用grep命令相关的知识,希望对你有一定的参考价值。

我试图只显示vmRSS属性。当我运行命令命令

cat ./Status

我得到了很多属性及其相应的值。我想要做的是以编程方式仅显示vmRSS。我可以在控制台中执行如下操作:

cat ./status | grep VmR

但是我怎么能以编程方式做到这一点。

我的尝试

const ls2 = spawn('cat', ['/proc/' + process.pid + '/status']);
答案

由于child_process spawn在子进程中启动shell,我认为你最好在当前的shell中使用child_process exec()命令。

这是一个例子(感谢@Inian):

const { exec } = require('child_process');

exec('grep VmR /proc/' + process.pid + '/status', (err, stdout) => {
  if (err) return console.log(err)
  console.log(stdout)  // VmRSS:     13408 kB
})

否则,如果你不想生成一个shell来获取该信息,你可以使用fs来读取文件,如下所示:

const fs = require('fs');

let process_status = '/proc/' + process.pid + '/status';

fs.readFile(process_status, { encoding: 'utf8' }, (err, buf) => {
  if (err) return console.log(err)

  let lines = buf.split('
')  // each line in an array
  let line = lines.filter(line => /VmRSS/.test(line))  // find interesting line
  let VmR = line[0].replace(/	/g, '')  // clean output removing tabulation

  console.log(VmR)  // VmRSS:   13208 kB

})

以上是关于如何在node.js中以编程方式使用grep命令的主要内容,如果未能解决你的问题,请参考以下文章

node.js,express - 在循环中以同步方式一个接一个地执行mysql查询

如何在 node.js 中以角度使用 socket.io?

如何在 C 中以编程方式实现“tee”?

如何在 Python 中以编程方式传递密码

如何在 Windows 8.1 中以编程方式更改当前的 Windows 主题?

在 COCOA 中以编程方式获取“GeneratedUID”