确定 java 进程名称中正在运行哪些 java 应用程序

确定 java 进程名称中正在运行哪些 java 应用程序

我正在为 Sublime Text 3 编写一个用于 JavaScript 单元测试的内置系统。我正在使用
js 测试驱动程序作为我的测试框架。 Sublime Text 只能执行一个命令,因此我使用 bash 脚本来完成这项工作。 js-test-driver 是一个java应用程序,我希望能够测试它是否已经在运行。据我所知,进程名称只是java.有什么方法可以知道java进程内正在运行哪些java应用程序?如果没有,我如何测试特定的java应用程序是否正在运行?

答案1

您可以使用jps命令:

jps | grep "[0-9][0-9]* js-test-driver"

但是,它可能不会被称为js-test-driver,它可能类似于js-test-driver.jar.尝试首先查看输出jps

答案2

通过procps-ng ps(应该是大多数 Linux 系统上的标准),您可以使用该-C选项将输出限制为特定名称的命令。最有可能的js-test-driver是命令参数中的某个地方。您可以使用以下命令列出正在运行的进程的所有参数java

ps -C java -o args=

要测试js-test-driver参数列表中的任何位置,您可以执行以下操作:

ps -C java -o args= | grep -q js-test-driver &&
  echo 'js-test-driver running'

您还可以使用pgrep,相当于上面的内容:

pgrep -f js-test-driver >/dev/null && echo 'js-test-driver running'

请注意,如果您检查进程是否正在运行的原因是为了避免同时启动两个脚本,则有更可靠的方法可以避免可能的竞争条件。看我的在这里回答有关锁定文件方法的示例。

相关内容