Javascript 如何将vmstat和free-m转换为object?
我想将exec执行的vmstat-s命令的输出转换为对象,以及free-m命令out put 我从exec免费获得此信息-m: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
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