如何使用 pm2 配置文件启动带参数的 java 应用程序?

Raf*_*rsk 7 node.js pm2

我正在尝试使用...启动graphhopper是一个 java 应用程序,我在终端上启动它的方式是转到其文件夹并输入以下命令:pm2graphhopper

java -jar matching-web/target/graphhopper-map-matching-web-1.0-SNAPSHOT.jar server config.yml
Run Code Online (Sandbox Code Playgroud)

该应用程序可以从命令行正常运行,但我还没有成功地将其作为服务运行pm2。我正在使用的配置文件是这个(pm2 start config.json):

{
    "apps":[
    {
        "name":"graphhopper",
        "cwd":".",
        "script":"/usr/bin/java",
        "args":[
            "-jar",
            "/home/myyser/graphhopper/map-matching/matching-web/target/graphhopper-map-matching-web-1.0-SNAPSHOT.jar",
            "server",
            "config.yml"
        ],
        "log_date_format":"YYYY-MM-DD HH:mm Z",
        "exec_interpreter":"",
        "exec_mode":"fork"
     }
   ]
}
Run Code Online (Sandbox Code Playgroud)

我 100% 确定我在这里出错的是我编写参数的方式"server", "config.yml"...查看一下pm2 logs graphhopper我可以看到这些参数根本没有被识别...我尝试调整也是这样做的,但我没有找到正确的解决方案。我知道如何pm2不带参数启动java应用程序。但是我该如何使用具有参数的 java 应用程序来做到这一点呢graphhopper

Raf*_*rsk 14

正如评论中所述,这个问题可以通过创建一个bash脚本并运行它来解决,pm2而不是直接运行java应用程序...使用的bash脚本是graphhopper.sh如下文件:

#!/bin/bash
java -jar matching-web/target/graphhopper-map-matching-web-1.0-SNAPSHOT.jar server config.yml
Run Code Online (Sandbox Code Playgroud)

并将其作为服务启动pm2

pm2 start graphhopper.sh --name=graphhopper
Run Code Online (Sandbox Code Playgroud)