使用Groovy获取进程的PID
发布时间:2020-12-14 16:22:22 所属栏目:大数据 来源:网络整理
导读:我正在尝试在Groovy中创建一个方法来获取应用程序的进程ID.我现在正处于这个阶段: String getProcessIdFor(String program) { def buffer = new StringBuffer() Process commandOne = 'ps -A'.execute() Process commandTwo = "grep -m1 '${program}'".exec
我正在尝试在Groovy中创建一个方法来获取应用程序的进程ID.我现在正处于这个阶段:
String getProcessIdFor(String program) { def buffer = new StringBuffer() Process commandOne = 'ps -A'.execute() Process commandTwo = "grep -m1 '${program}'".execute() Process commandThree = "awk '{print $1}'".execute() Process process = commandOne | commandTwo | commandThree process.waitForProcessOutput(buffer,buffer) return buffer.toString() } 但这给了我: Exception in thread "Thread-1" groovy.lang.GroovyRuntimeException: exception while reading process stream awk: syntax error at source line 1 at org.codehaus.groovy.runtime.ProcessGroovyMethods$3.run(ProcessGroovyMethods.java:402) context is at java.lang.Thread.run(Thread.java:745) >>> ' <<< missing } Caused by: java.io.IOException: Stream closed awk: bailing out at source line 1 at java.lang.ProcessBuilder$NullOutputStream.write(ProcessBuilder.java:434) at java.io.OutputStream.write(OutputStream.java:116) at java.io.BufferedOutputStream.write(BufferedOutputStream.java:122) at java.io.BufferedOutputStream.write(BufferedOutputStream.java:122) at org.codehaus.groovy.runtime.ProcessGroovyMethods$3.run(ProcessGroovyMethods.java:399) ... 1 more Process finished with exit code 0 看起来它在awk命令上挣扎,但我似乎无法弄清楚我哪里出错了.有任何想法吗? 解决方法
另一种方法(因为ps的输出不应该阻止任何缓冲区)
Integer getPid(processName) { 'ps -A'.execute() .text .split('n') .find { it.contains processName }?.split()?.first() as Integer } println getPid('groovyconsole') (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |