Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将vmstat和free-m转换为object?_Javascript_Node.js - Fatal编程技术网

Javascript 如何将vmstat和free-m转换为object?

Javascript 如何将vmstat和free-m转换为object?,javascript,node.js,Javascript,Node.js,我想将exec执行的vmstat-s命令的输出转换为对象,以及free-m命令out put 我从exec免费获得此信息-m: total used free shared buff/cache available Mem: 7855 2054 1082 257 4718 5243 Swap: 2047

我想将exec执行的vmstat-s命令的输出转换为对象,以及free-m命令out put

我从exec免费获得此信息-m:

              total        used        free      shared  buff/cache   available
Mem:           7855        2054        1082         257        4718        5243
Swap:          2047           0        2047
对于vmstat-s,我得到了这个输出

      8044160 K total memory
      2081200 K used memory
      3491012 K active memory
      2508932 K inactive memory
      1131132 K free memory
       579204 K buffer memory
      4252624 K swap cache
      2097148 K total swap
            0 K used swap
      2097148 K free swap
       328672 non-nice user cpu ticks
         3273 nice user cpu ticks
        85460 system cpu ticks
      4215038 idle cpu ticks
        13261 IO-wait cpu ticks
            0 IRQ cpu ticks
          450 softirq cpu ticks
            0 stolen cpu ticks
      2095462 pages paged in
      3761868 pages paged out
            0 pages swapped in
            0 pages swapped out
     10301935 interrupts
     36499667 CPU context switches
   1551158702 boot time
        17506 forks
那么,我如何将这个输出转换成像这样的对象呢

objFreeM = {
  mem: {total: 7855, used: 2054, ...etc},
  swap: {total: 2047, used: 0, free: 2047}
}

objVmstat = {
  totalmemory: 8044160,
  usedmemory: 2081200,
  ....etc
}
这是vmstat的结果


"8044160 K总内存\n 2517232 K已用内存\n 4064068 K活动内存\n 2733260 K非活动内存\n 304940 K空闲内存\n 650300 K缓冲内存\n 4571688 K交换缓存\n 2097148 K总交换\n 0 K已用交换\n 2097148 K空闲交换\n 454507非友好用户cpu时钟\n 3803尼斯用户cpu滴答声\n 117177系统cpu滴答声\n 7955496空闲cpu滴答声\n 15791 IO等待cpu滴答声\n 0 IRQ cpu滴答声\n 528 softirq cpu滴答声\n 0被盗cpu滴答声\n 2244129页调入\n 4442696页调出\n 0页调出\n 0页调出\n 0页调出\n 14232293中断\n 50365325 CPU上下文开关\n 1551158702启动时间\n 22313分叉\n“

让我们初始化字符串:

var myString = "      8044160 K total memory\n      2517232 K used memory\n      4064068 K active memory\n      2733260 K inactive memory\n       304940 K free memory\n       650300 K buffer memory\n      4571688 K swap cache\n      2097148 K total swap\n            0 K used swap\n      2097148 K free swap\n       454507 non-nice user cpu ticks\n         3803 nice user cpu ticks\n       117177 system cpu ticks\n      7955496 idle cpu ticks\n        15791 IO-wait cpu ticks\n            0 IRQ cpu ticks\n          528 softirq cpu ticks\n            0 stolen cpu ticks\n      2244129 pages paged in\n      4442696 pages paged out\n            0 pages swapped in\n            0 pages swapped out\n     14232293 interrupts\n     50365325 CPU context switches\n   1551158702 boot time\n        22313 forks\n";
现在让我们将其拆分:

var myArray = myString.split("\n");
然后修剪项目:

for (var index in myArray) myArray[index] = myArray[index].trim();
为camel case键定义辅助函数:

function camelize(str) {
  return str.replace(/(?:^\w|[A-Z]|\b\w)/g, function(letter, index) {
    return index == 0 ? letter.toLowerCase() : letter.toUpperCase();
  }).replace(/\s+/g, '');
}
最后分析结果:

var results = {};
for (var item of myArray) {
    var temp = item.split(" ");
    var value = temp[0];
    var key = "";
    var start = 1;
    if (temp[1] === "K") {
        value += " K";
        start = 2;
    } else {
        key = "";
    }
    for (var index = start; index < temp.length; index++) key += " " + temp[index];
    key = key.trim();
    if (key || value) results[camelize(key)] = value; 
}
var结果={};
for(myArray的变量项){
var temp=项目拆分(“”);
var值=温度[0];
var key=“”;
var start=1;
如果(温度[1]=“K”){
值+=“K”;
开始=2;
}否则{
key=“”;
}
对于(var index=start;index