Node.js - spawn正在切断结果

时间:2017-08-01 23:33:45

标签: node.js shell child-process spawn

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

我的代码

/usr/local+

结果

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

有什么办法解决吗? 最好的问候

2 个答案:

答案 0 :(得分:1)

来自top联机帮助页:

  

在批处理模式下,当使用不带参数top时,将使用COLUMNS =和LINES =格式化输出               环境变量,如果设置。否则,宽度将固定为最多512列。与               参数,输出宽度可以减少或增加(最多512),但行数是重要的 -               无限的。

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

答案 1 :(得分:0)

由于您使用node,因此可以查询在localhost上运行的netdata。

示例:

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

对于localhost 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可以导出shell脚本的BASH格式的所有指标。检查一下:https://github.com/firehol/netdata/wiki/receiving-netdata-metrics-from-shell-scripts