【发布时间】:2020-12-04 08:15:05
【问题描述】:
我正在尝试使用 pm2 启动 graphhopper...graphhopper 是一个 java 应用程序,我在终端上启动它的方式是转到它的文件夹并输入以下命令:
java -jar matching-web/target/graphhopper-map-matching-web-1.0-SNAPSHOT.jar server config.yml
此应用程序在命令行运行时运行良好,但我还没有成功地将其作为服务使用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"
}
]
}
我 100% 确定我在这里出错的是我编写 "server", "config.yml" 参数的方式...查看 pm2 logs graphhopper 我可以看到这些参数根本没有被识别。 ..我也尝试调整它的完成方式,但我没有设法找出正确的解决方案。我知道如何使用pm2 不带参数地启动Java 应用程序。但是如何使用具有 graphhopper 的情况下的参数的 java 应用程序呢?
【问题讨论】:
-
编写一个 bash 脚本。包含在 bash CLI 中,上面的 args 列表。即 bash 是 java cli args 的包装器。然后只需从 json 中的应用程序属性调用该包装器外壳
-
@RobertRowntree 谢谢!!只需 bash 脚本就足以解决我的问题。创建脚本并授予它执行权限后,我可以使用
pm2 start graphhopper.sh --name=graphhopper启动我的服务。我的问题的文件原来是没有必要的。