2017-07-13 15 views
0

我正在尝试使用节点js上的子进程获取虚拟机的磁盘空间。这是我的代码:如何通过命令解析通过节点JS中的子进程接收特定行

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


function diskSpace(err, result) { 
    exec('df -h',(error, stdout, stderr) => { 
    if (error) { 
     console.error(`exec error: ${error}`); 
     return; 
    } 
    console.log(`stdout: ${stdout}`); 
    console.log(`stderr: ${stderr}`); 
})}; 

diskSpace(); 

当我收到运行此使用节点stats.js,这是我的文件,我得到了我的终端上-h命令DF的名称。我想解析这个信息,只获得/ dev/disk/1的信息: [node stats.js] [1]

[1]:https://i.stack.imgur.com/2vzb1.png但我不知道如何。帮帮我 ?

回答

0

那么,你这样做是正确的。该回调函数在子项process termination上执行,所以stdout实际上是一个字符串:

const { exec } = require('child_process'); 
function diskSpace(err, result) { 
    exec('df -h',(error, stdout, stderr) => { 
    if (error) { 
     console.error(`exec error: ${error}`); 
     return; 
    } 
    console.log(`stdout: ${stdout}`); 
    console.log(`stderr: ${stderr}`); 
    console.log('>>', /(\/dev\/disk1.*)\/\n/.exec(stdout)[1]); 
})}; 

diskSpace();