如何在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查询