import java.lang.management.*
final String name = ManagementFactory.getRuntimeMXBean().getName();
final Integer pid = Integer.parseInt(name[0..name.indexOf("@")-1])
我在我的代码中尝试了这个但是得到了正在运行的程序的pid。我正在运行一个名为sleep.sh的睡眠脚本(它只是睡眠),我希望得到它的pid。有没有办法做到这一点?我自己没有找到一个很好的方法。
我还使用了ps | grep和我可以看到进程ID是否有输出它的方法?
Process proc1 = 'ps -ef'.execute()
Process proc2 = 'grep sleep.sh'.execute()
Process proc3 = 'grep -v grep'.execute()
all = proc1 | proc2 | proc3
有没有办法可以修改all.text以获取进程ID,还是有其他方法可以获取它?
答案 0 :(得分:3)
Object getNumber(String searchProc) {
//adds the process in the method call to the grep command
searchString = "grep "+searchProc
// initializes the command and pipes them together
Process proc1 = 'ps -ef'.execute()
Process proc2 = searchString.execute()
Process proc3 = 'grep -v grep'.execute()
all = proc1 | proc2 | proc3
//sets the output to the piped commands to a string
output = all.text
//trims down the string to just the process ID
pid = output.substring(output.indexOf(' '), output.size()).trim()
pid = pid.substring(0, pid.indexOf(' ')).trim()
return pid
}
这是我的解决方案。 (我想把它变成一个方法,所以我把方法声明放在最顶层) 我一开始的问题是进程名称和pid之间有多个空格。但后来我找到了修剪方法,效果很好。如果您对我的方法有疑问,请告诉我。我会定期检查。