我想从我的Grails应用中执行svn delete
。我在Grails控制台中测试了以下两个内容:
"svn delete /usr/share/mydir".execute()
Runtime.getRuntime().exec("svn delete /usr/share/mydir")
在这两种情况下,都会返回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"
我现在看到它失败的原因是:
错误svn:无法打开文件'/usr/share/mydir/.svn/lock':权限 拒绝
答案 0 :(得分: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()
}