Java执行bash脚本,错误= 26文本文件忙【JAVA教程】

!
也想出现在这里? 联系我们
信息

Java执行bash脚本,错误= 26文本文件忙,第1张

概述Java执行bash脚本错误= 26文本文件忙

我有一个编写linux bash脚本的java代码,然后做一个chmod来添加执行权限,然后尝试执行它。 我得到一个IOException在进程开始时说错误= 26,文本文件繁忙。 我已valIDation文件已完成写入和stream已closures。 chmod工作正常,但我不断收到这个错误。

我注意到,如果我运行一个deBUGging器,并通过代码,它没有得到错误,所以很明显,有一个时间问题。 在我尝试执行bash脚本之前,如何确保chmod已经完成? 我想避免非可靠的解决scheme,如添加Thread.sleep(10000),以及“Hacky”的东西,如将try / catch块中的执行放入循环中,直到成功。

我有相当数量的代码包装进程的启动与侦听线程等,但这里是它正在做的简化版本(也试过这个代码,它有相同的结果):

String[] cmd1 = {\”/bin/chmod\”,\”750\”,postfile }; new ProcessBuilder(cmd1).redirectErrorStream(true).start().waitFor(); String[] cmd2 = { postfile }; new ProcessBuilder(cmd2).redirectErrorStream(true).start().waitFor();

每次执行后,“postfile”都有正确的750个权限,但是没有执行(由于IOException)。

Cygwin没有find/.bashrc

从bash脚本生成一个bash脚本

生成具有相同结构的多个文件

匹配模式,插入模式,直到下一个匹配

即使页面不存在,Wget也会创build输出文件

bash如何处理嵌套引号?

如何在bash / linux脚本中执行相同的循环1小时?

在linux和BSD中使用和不使用shebang的Bash脚本执行

Bash脚本在由shell提示执行时产生的结果不同于cron执行的结果

检查一个目录是否存在并且可以访问

你确定它是负责后续错误的chmod吗? 你可以检查你确定关闭输出文件,然后再尝试运行它?

如果你关闭它,那么我不知道为什么chmod应该导致这个错误,但是你可以避免使用shell运行脚本来运行chmod:

String[] cmd = {\”bash\”,postfile };

为了将来的参考,这可能是由于在这种情况下未被关闭的流造成的,但是在立即运行文件之后在文件上设置权限也会导致这个错误:

java.io.IOException: Cannot run program \”…\”: error=26,Text file busy

这是JDK中的一个可能的错误 。 就我而言,这是由这段代码造成的

files.setPosixfilePermissions(Paths.get(scriptPath),set(PosixfilePermission.OWNER_EXECUTE,PosixfilePermission.OWNER_READ)); ProcessBuilder processBuilder = new ProcessBuilder(scriptPath).directory(workingDir); processBuilder.start();

即使没有编辑脚本文件。

我不知道它是否相关,但通常你需要获取或重定向ErrorStream和inputStream(我通常让他们在我创建的ResponseStreamReader,不知道重定向的选择)。

总结

以上是内存溢出为你收集整理的Java执行bash脚本,错误= 26文本文件忙全部内容,希望文章能够帮你解决Java执行bash脚本,错误= 26文本文件忙所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

© 版权声明
THE END
喜欢就支持一下吧
点赞153 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容