You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过NodeJS代码执行Docker容器内Bash命令获取InfluxDB磁盘大小

解决Docker exec TTY错误并获取InfluxDB磁盘占用
  • 错误原因:docker exec的-it参数里,-t是用来分配伪TTY终端的,而Node.js的child_process运行在非交互环境下,没有可用的TTY设备,所以触发报错。
  • 修正命令:移除-t参数(保留-i或直接省略参数都可以,因为这里不需要交互式输入),修改后的命令为:
    docker exec influxdb du -sh /var/lib/influx2/engine
    
  • Node.js代码实现示例:
    用exec方法的写法:
    const { exec } = require('child_process');
    
    exec('docker exec influxdb du -sh /var/lib/influx2/engine', (err, stdout, stderr) => {
      if (err) {
        console.error(`执行失败: ${err.message}`);
        return;
      }
      if (stderr) {
        console.error(`错误输出: ${stderr}`);
        return;
      }
      console.log('InfluxDB磁盘占用:', stdout.trim());
    });
    
    更安全的execFile写法(避免shell命令注入风险):
    const { execFile } = require('child_process');
    
    execFile('docker', ['exec', 'influxdb', 'du', '-sh', '/var/lib/influx2/engine'], (err, stdout, stderr) => {
      if (err) {
        console.error(`执行失败: ${err.message}`);
        return;
      }
      if (stderr) {
        console.error(`错误输出: ${stderr}`);
        return;
      }
      console.log('InfluxDB磁盘占用:', stdout.trim());
    });
    
  • 注意事项:
    • 替换命令中的influxdb为你的实际容器名称或ID
    • 确保运行Node.js的进程有执行Docker命令的权限

内容的提问来源于stack exchange,提问作者Dragonknot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 18:58:34