lxc/lxd 启动/删除命令的 node.js child_process exec 问题

问题描述 投票:0回答:0

我正在使用 node.js 在服务器上执行 lxc/lxd 命令。许多用于获取有关容器的信息的命令都按预期工作。例如:

app.get('/checkVirtual', (req, res) => {
    exec('lxc list -c "n" --format="csv"', (error, stdout, stderr) => {
        if (error) {
            //console.log(`error: ${error.message}`);
            return;
        }
        if (stderr) {
            //console.log(`stderr: ${stderr}`);
            return;
        }
        //console.log(`stdout: ${stdout}`);
        res.send(stdout)
    });
})

执行 lxc/lxd 启动/删除命令时出现问题。 在 bash 中执行命令的示例:

在 node.js 中执行命令的代码:

app.get('/createMachine', (req, res) => {
    exec('lxc launch ubuntu: virtual4', (error, stdout, stderr) => {
        if (error) {
            console.log(`error: ${error.message}`);
            return;
        }
        if (stderr) {
            console.log(`stderr: ${stderr}`);
            return;
        }
        console.log(`stdout: ${stdout}`);
        res.send(stdout)
    });
})

执行请求时,首先会等待很长时间(通常比执行命令的时间还长),之后就会有响应:

一个有趣的细节:如果你尝试用一个已经被占用的名字创建一个新的容器,结果不会改变:Waiting -> 504。虽然应该有错误输出。

node.js exec child-process lxc lxd
© www.soinside.com 2019 - 2024. All rights reserved.