Dón*_*nal 6 java grails groovy process
我想svn delete从我的Grails应用程序执行.我在Grails控制台中测试了以下两个方面:
"svn delete /usr/share/mydir".execute()
Runtime.getRuntime().exec("svn delete /usr/share/mydir")
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,java.lang.Process都返回一个实例,但该命令不会被执行(/usr/share/mydir不会被删除).
仅当应用程序在Linux(Ubuntu)上运行时才会发生此行为.如果我在Windows上运行它,命令就会执行.
根据Tim在评论中的建议,我更改了命令,以便捕获进程输出:
def process = "svn delete /usr/share/mydir".execute()
def out = new StringBuilder()
process.waitForProcessOutput(out, new StringBuilder())
println "$out"
Run Code Online (Sandbox Code Playgroud)
我现在看到它失败的原因是因为:
错误svn:无法打开文件'/usr/share/mydir/.svn/lock':权限被拒绝
小智 3
下面的代码在 CentOS 上对我来说工作得很好。
def scriptCom="/folderlocation/shellscript.sh"
println "[[Running $scriptCom]]"
def proc = scriptCom.execute()
def oneMinute = 60000
proc.waitForOrKill(oneMinute)
if(proc.exitValue()!=0){
println "[[return code: ${proc.exitValue()}]]"
println "[[stderr: ${proc.err.text}]]"
return null
}else{
println "[[stdout:$revisionid]]"
return proc.in.text.readLines()
}
Run Code Online (Sandbox Code Playgroud)