我继承了一些代码:
Process p = new ProcessBuilder("/bin/chmod","777",path).start();
p.waitFor();

基本上,有一些基于古代和高度巫术的原因,将键/值对存储在磁盘上作为文件.我真的不想进去

但是,我留下了一堆IO异常:

Exception :Cannot run program "/bin/chmod": java.io.IOException: error=24,Too many open files
Message: Cannot run program "/bin/chmod": java.io.IOException: error=24,Too many open files

一堆我的意思是在10万千万的领域

我得到waitFor调用是为了阻止这些发生等待进程完成并退出,但是我认为chmod在文件实际关闭之前返回一个结果.有人知道这是否会成为这些例外的原因?

我的另一个倾向是,数千个文件的打开和关闭在java端没有足够快的发生,还有其他的事情,也许有些形式的文件缓冲区没有被清除,正在调用fw.close().

我对java很新,这是一个让我失望的怪异怪物. (很高兴应用程序仍然运行某种方式..在吐出一个非常大的日志文件后)

任何人都可以想办法解决这个问题,清除缓冲区或将文件的开放限制增加到jvm可以跟上自己的位置(假设是问题)

解决方法

我假设你正在一个循环中运行这些chmod命令 – 否则我不明白为什么你会得到这么多异常.您可能会遇到死锁,因为您没有读取生成的进程的输出.这当然是用来在我们之前的ProcessBuilder Runtime.exec()日子里咬我的.

将您的代码段更改为上述模式:

try {
    ProcessBuilder pb = new ProcessBuilder("/bin/chmod",path);    
    pb.redirectErrorStream(true); // merge stdout,stderr of process

    Process p = pb.start();
    InputStreamReader isr = new  InputStreamReader(p.getInputStream());
    BufferedReader br = new BufferedReader(isr);

    String lineRead;
    while ((lineRead = br.readLine()) != null) {
        // swallow the line,or print it out - System.out.println(lineRead);
    }

    int rc = p.waitFor();
    // Todo error handling for non-zero rc
}
catch (IOException e) {
    e.printstacktrace(); // or log it,or otherwise handle it
}
catch (InterruptedException ie) {
    ie.printstacktrace(); // or log it,or otherwise handle it
}

(信用:this site),看看是否有助于这种情况.

java – Process Builder的waitFor()问题和打开的文件限制的更多相关文章

  1. android – 即使在我的设备上使用chmod 777之后也无法adb拉数据库

    以下是我在命令窗口中所做的.解决方法我使用这些命令从/data/data文件夹中获取数据,不需要更改权限

  2. PHP chmod 函数与批量修改文件目录权限

    chmod() 函数改变文件模式。chmod — Changes file mode 如果成功则返回 TRUE,否则返回 FALSE。

  3. sudo – chmod -R 777 /关于ubuntu – 很多问题

    t=1180661&page=2然后我尝试重置root密码.我仍然不能成为root或suroot.系统似乎运行正常.是否有任何建议让su再次工作?我在哪里可以找到更多问题?我实际上会考虑完全重新安装系统.即使你设法获得大多数权限并且事情看似有效,也很可能会有一些特殊的权限,只是等待引起麻烦.或者,我将权限与第二台机器进行比较.不应该与你最喜欢的脚本语言一起努力.

  4. ubuntu – 撤消chmod 777

    例如.顺便说一下,关于调试权限问题的任何提示?使用ACL工具可以轻松地备份和恢复权限以及目录树的所有权.即使您没有在文件系统上启用ACL,它也能正常工作.大多数权限问题都会导致“权限被拒绝”错误消息出现在控制台或某些日志文件中.调查文件访问问题的强大工具是strace.它显示了进程进行的系统调用.输出可能很难理解,但是相对容易看到程序试图访问哪些文件以及它为什么能够找到它想要的东西.用法示例:

  5. ubuntu – 官方CHMOD 755

    重新安装是最好的选择.即使下面的工作,我个人总是会有一种不正确的感觉.>使用另一个Ubuntu系统来引用您的权限.相同的Ubuntu版本和架构.>将/root/perms.txt复制到主系统>使用/root/perms.txt来引用和修改权限if[-a$filename];然后echo-E“$filename”>>/root/chmod-success.logchmod$perm$filename其他echo-E“$filename”>>/root/chmod-failure.log科幻DONE>检查/r

  6. 如何在服务启动之前在Ubuntu上运行’sudo chmod 666 /var/run/docker.sock’

    编辑:服务的帐户已经是docker组的成员.要直接回答您的问题,只需将以下内容添加到名为/etc/init/docker-chmod.conf的文件中,即可在引导期间设置权限.但您应该考虑将您的系统用户或系统用户添加到docker-unix组,以避免这样的解决方法,这可能是一个很大的潜在安全威胁.chmod的结果实际上为所有本地用户提供了对docker-socket的读写权限,允许任何人干扰你的docker镜像.

  7. ubuntu – PXE服务器上的chmod -R 777 – 为什么

    我的第一个问题是TFTP守护进程只需要核心内核/启动文件上的这个mod–我错了吗?我问,因为我计划重新进行整个设置,我想在不将777mod应用于本指南中指定的所有文件的情况下执行此操作.不想再做777mod的原因:>Whyis“chmod-R777/”destructive?>chmod-R777/onubuntu–numerousproblems在ServerFault上可以找到无数更多的实例.绝对不需要设置这些权限.此外,您可以将权限设置为仅允许运行TFTP服务器的用户读取文件.PXE根目录下的任何文

  8. 我无意中在ubuntu AWS Server上运行chmod -R 600 /

    我无意中在ubuntuAWSServer上运行chmod-R600/.试图阻止它但没有发生.有没有办法可以至少备份服务器中存在的数据.谢谢.>启动另一个实例.>将磁盘从损坏的实例安装到非根安装点.>备份您的数据>恢复到新实例

  9. Ubuntu 之开机自动挂载NTFS 解决 chmod 对 NTFS 失效的问题

    1查看自己的磁盘分析信息UUIDUGDGID信息如查看UUID如下ls-l/dev/disk/by-uuidlrwxrwxrwx1rootroot101月1221:450001AC6D000973C1->../../sda5lrwxrwxrwx1rootroot101月1221:450003A300000D437F->../../sda6lrwxrwxrwx1rootroot101月1221:45

  10. php – 通过chmod在运行时错误更改权限“操作不允许”

    您需要作为文件的所有者,或者是超级用户,即用户root.如果您拥有该目录而不是该文件,则可以复制该文件,rm是原始文件,然后将其复制,然后您将可以选择该文件.临时成为root的简单方法是通过sudo运行命令.

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部