【问题标题】:Node.js - spawn is cutting off the resultsNode.js - spawn 正在切断结果
【发布时间】:2017-08-01 23:33:44
【问题描述】:

我正在创建一个节点程序来返回 linux top 命令的输出,工作正常唯一的问题是命令的名称被剪切,而不是像/usr/local/libexec/netdata/plugins.d/apps.plugin 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

结果

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+

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

【问题讨论】:

    标签: node.js shell child-process spawn


    【解决方案1】:

    来自top 联机帮助页:

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

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

    【讨论】:

    • 你是对的,添加这个参数可以解决问题。非常感谢
    【解决方案2】:

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

    例子:

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

    对于本地主机网络数据: http://localhost:19999/api/v1/data?chart=apps.cpu&amp;after=-1&amp;options=ms

    您还可以获得 systemd 服务:

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

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

    http://london.my-netdata.io/api/v1/data?chart=apps.cpu&amp;after=-5&amp;points=1&amp;group=average&amp;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

    【讨论】:

    • 看起来很有趣,如何与我的项目集成(见上面的代码)并通过套接字发送数据?
    猜你喜欢
    • 1970-01-01
    • 2020-03-30
    • 1970-01-01
    • 2014-11-13
    • 2015-11-05
    • 1970-01-01
    • 2018-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多