微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

每次都生成连续的 bash 命令并等待完成的流

如何解决每次都生成连续的 bash 命令并等待完成的流

我想生成一个 bash 命令 (top -b),它应该在后台连续运行并不断提供结果。我想通过 websocket 将整个输出发送到我的前端,每次提供完整的输出。不幸的是,top一个输出太长并且被拆分为多条消息。

是否有一种干净的方法来等待合并消息并返回整个输出?我怎么知道输出是完整的?

到目前为止,我唯一的解决方案是让命令完成并收集所有返回并将其返回。但是这样我每次都必须再次生成我的命令,我想避免这种情况。

import { spawn } from 'child_process'

// Spawn command
const command = 'top'
const args = ['-b']
const child = spawn(command,args)

// Data output
child.stdout.setEncoding('utf8')
child.stdout.on('data',(data) => {
    const convertedData = data.toString()
    console.log(convertedData)
    // Here I want to "collect" my data and wait until "one complete output" is delivered
    // doSomethingWithCompleteOutput()
})

解决方法

我有一个可行的解决方案,但是脚本在 no 开始新的输出/间隔之前无法识别完成的输出。

我继续寻找更好的解决方案,以便我可以直接看到输出何时尽快完成。

top

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。