2017-07-13 54 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();