2017-08-01 85 views
0

我正在创建一个节点程序来返回linux top命令的输出,工作正常,唯一的问题是命令的名称被切断,而不是完整的命令名称/usr/local/libexec/netdata/plugins.d/apps.plugin 1回报/usr/local+Node.js - spawn正在切断结果

我的代码

const topparser=require("topparser") 
const spawn = require('child_process').spawn 
let proc=null 
let startTime=0 

exports.start=function(pid_limit,callback){ 
    startTime=new Date().getTime() 
    proc = spawn('top', ['-c','-b',"-d","3"]) 
    console.log("started process, pid: "+proc.pid) 
    let top_data="" 

    proc.stdout.on('data', function (data) { 
     console.log('stdout: ' + data); 
    }) 

    proc.on('close', function (code) { 
     console.log('child process exited with code ' + code); 
    }); 


}//start 

exports.stop=function(){ 
    console.log("stoped process...") 
    if(proc){proc.kill('SIGINT')}// SIGHUP -linux ,SIGINT -windows 
}//stop 

结果

14861 root  20 0  0  0  0 S 0.0 0.0 0:00.00 [kworker/1+ 
14864 root  20 0  0  0  0 S 0.0 0.0 0:00.02 [kworker/0+ 
15120 root  39 19 102488 3344 2656 S 0.0 0.1 0:00.09 /usr/bin/m+ 
16904 root  20 0  0  0  0 S 0.0 0.0 0:00.00 [kworker/0+ 
19031 root  20 0  0  0  0 S 0.0 0.0 0:00.00 [kworker/u+ 
21500 root  20 0  0  0  0 Z 0.0 0.0 0:00.00 [dsc] <def+ 
22571 root  20 0  0  0  0 S 0.0 0.0 0:00.00 [kworker/0+ 

有办法解决吗? 此致

回答

1

top手册页:

在批处理模式中,不带参数顶部用来将格式化使用COLUMNS输出时=和LINES = 环境变量,如果设置。否则,宽度将固定在最多512列。通过参数 ,输出宽度可以减少或增加(最多512),但行数不受限制。

'-w', '512'添加到参数中。

+0

你是对的,加入这个参数解决了这个问题。 非常感谢 –

0

由于您使用节点,因此您可以查询在本地主机上运行的netdata。

例子:

http://london.my-netdata.io/api/v1/data?chart=apps.cpu&after=-1&options=ms

对于本地主机netdata: http://localhost:19999/api/v1/data?chart=apps.cpu&after=-1&options=ms

你也可以systemd服务:

http://london.my-netdata.io/api/v1/data?chart=services.cpu&after=-1&options=ms

如果您不打算更新屏幕每秒,你可以指示netdata返回更长的持续时间的平均值:

http://london.my-netdata.io/api/v1/data?chart=apps.cpu&after=-5&points=1&group=average&options=ms

上述返回平均值的最后5秒。

最后,你得到的最新值所有指标netdata显示器,与此:

http://london.my-netdata.io/api/v1/allmetrics?format=json

为了完整起见,netdata可以导出BASH格式的所有指标shell脚本。检查此:https://github.com/firehol/netdata/wiki/receiving-netdata-metrics-from-shell-scripts

+0

看起来很有趣,我该如何与我的项目集成(见上面的代码)并通过套接字发送数据? –