确定Tomcat是否使用Ruby运行

确定Tomcat是否使用Ruby运行,ruby,tomcat,ps,Ruby,Tomcat,Ps,我想确定Tomcat是否从ruby脚本运行。我的想法是运行下面的bash命令来查找Tomcat是否有相关的PID ps -axe | grep tomcat | grep java | awk '{print $1}' 当我在bash中单独运行该命令时,如果Tomcat正在运行,它将返回PID,否则它将不返回任何内容 当我从ruby运行命令时 puts `ps -axe | grep tomcat | grep java | awk '{print $1}'` 即使Tomcat没有实际运行,

我想确定Tomcat是否从ruby脚本运行。我的想法是运行下面的bash命令来查找Tomcat是否有相关的PID

ps -axe | grep tomcat | grep java | awk '{print $1}'
当我在bash中单独运行该命令时,如果Tomcat正在运行,它将返回PID,否则它将不返回任何内容

当我从ruby运行命令时

puts `ps -axe | grep tomcat | grep java | awk '{print $1}'`

即使Tomcat没有实际运行,也将始终打印PID。为什么PID总是用Ruby返回?我做错了什么?有更好的方法来实现我的目标吗?

您总是返回一个PID,因为
tomcat
java
也是用于检查
tomcat
是否正在运行的命令的一部分。检查
tomcat
是否处于活动状态的一种方法是尝试检查是否可以从tomcat服务器下载url。

是否尝试在系统中运行该命令?它每次都返回垃圾值。但是从命令行,它不会返回任何内容。每次运行它时,它都会得到一个新的进程id,当它启动时,它就是进程列表的一部分。然后它尝试在进程列表中查找
java
,它发现了自己!我要问的问题是,为什么同一个命令在ruby中返回垃圾号,而在bash shell中执行时不返回值。我知道tomcat是一个java参数,但命令行也应该返回一个垃圾值,对吗?试试bash-c的“ps-axe | grep tomcat | grep java”。所以ruby通过shell运行它