记录一个有趣的bug,排查好几天才发现的乌龙

项目中有个需求是统计某目录下各种文件的大小,需要在程序里执行一个bash命令

public static List<String> execCommand(String command) {
        List<String> result = new ArrayList<>();
        String line ="";
        try {
            // 创建 ProcessBuilder 对象
            ProcessBuilder processBuilder = new ProcessBuilder("/bin/bash", "-c", command);

            // 启动进程
            Process process = processBuilder.start();

            // 读取进程输出
            BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));

            while ((line = reader.readLine()) != null) {
                log.info("line:{}", line);
                result.add(line);
            }

            // 等待进程执行完毕
            process.waitFor();

        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }
        return result;
    }
find /path -type f \( -name "*bmp" -o -name "*gif" -o -name "*jpg" -o -name "*jpeg" -o -name "*png" -o -name "*doc" -o -name "*docx" -o -name "*xls" -o -name "*xlsx" -o -name "*ppt" -o -name "*pptx" -o -name "*html" -o -name "*htm" -o -name "*txt" -o -name "*rar" -o -name "*zip" -o -name "*gz" -o -name "*bz2" -o -name "*mp4" -o -name "*avi" -o -name "*rmvb" -o -name "*pdf" \)  -exec du -csh {} + | grep 总用量

然后就出现了一个有趣的情况,同样一台服务器同一个jar包同一个命令,我部署的话,这个统计的接口就会报错Index 0,同事部署的话就不会出现问题,几个同事共同研究百思不得其解,最后排查得知,同样的命令,在MobaXterm中执行 输出为 total,而在FinalShell中执行,输出为"总用量"  ,因此MobaXterm部署,grep不到关键字,导致调用这个接口为空,,,,修完之后大家都笑了.....

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值