使用“命令悬挂”获取Groovy中另一个程序的进程ID

使用“命令悬挂”获取Groovy中另一个程序的进程ID,groovy,scripting,grep,pid,ps,Groovy,Scripting,Grep,Pid,Ps,我在代码中尝试了这一点,但得到了运行程序的pid。我正在运行一个睡眠脚本,它所做的就是sleep,名为sleep.sh,我想得到它的pid。有办法吗?我自己也没有找到一个很好的方法 我还使用了一个ps | grep,我可以看到进程id,但有没有办法输出它 import java.lang.management.* final String name = ManagementFactory.getRuntimeMXBean().getName(); final Integer pid = Int

我在代码中尝试了这一点,但得到了运行程序的pid。我正在运行一个睡眠脚本,它所做的就是sleep,名为sleep.sh,我想得到它的pid。有办法吗?我自己也没有找到一个很好的方法

我还使用了一个ps | grep,我可以看到进程id,但有没有办法输出它

import java.lang.management.*

final String name = ManagementFactory.getRuntimeMXBean().getName();
final Integer pid = Integer.parseInt(name[0..name.indexOf("@")-1])
是否有一种方法可以修改all.text以获取进程id,还是有其他方法获取进程id

Process proc1 = 'ps -ef'.execute()
Process proc2 = 'grep sleep.sh'.execute()
Process proc3 = 'grep -v grep'.execute()
all = proc1 | proc2 | proc3
这是我的解决方案。我想让它成为一个方法,所以我把方法声明放在最上面 一开始我的问题是进程名和pid之间的空格不止一个。但后来我找到了修剪方法,效果很好。如果你对我的方法有疑问,请告诉我。我会定期回来看看

这是我的解决方案。我想让它成为一个方法,所以我把方法声明放在最上面
一开始我的问题是进程名和pid之间的空格不止一个。但后来我找到了修剪方法,效果很好。如果你对我的方法有疑问,请告诉我。我会定期回来查看。

nvm我回答了。如果你想回答这个问题,我仍然会给出最好的答案如果你有一个解决方案,那就是在下面回答并接受它!我回答了。如果你想回答这个问题,我仍然会给出最好的答案如果你有一个解决方案,那就是在下面回答并接受它!此外,如果要返回int,可以使用toInteger方法。ex.pid=pid.toIntegerAlso如果要返回int,可以使用toInteger方法。例如pid=pid.toInteger
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
}