保持我的JAVA(jar)程序在Heroku

时间:2017-06-07 13:53:28

标签: java heroku dyno

我用Java制作了一个机器人,当我运行命令时,它运行得很好:

heroku run nohup java -jar bot.jar

但是,24小时后Heroku因为他们的Dyno政策而关闭了它。所以,我想创建一个 Procfile ,以便它每次再次活动时执行上面的命令。

我已尝试将以下命令放在 Procfile 中:

worker: java -jar bot.jar
worker: nohup java -jar bot.jar

我甚至创建了一个包含以下内容的run.sh文件:

#!/bin/bash
nohup java -jar bot.jar

为了制作具有以下内容的 Procfile

worker: sh run.sh

可悲的是,这一切都不起作用,因为每次Dyno执行 Procfile (在我通过git推送它的新版本之后),机器人永远不会活着。日志显示:

2017-06-07T13:17:33.651806+00:00 app[api]: Starting process with command `sh run.sh` by XXXX

2017-06-07T13:17:37.958327+00:00 heroku[run.2087]: State changed from starting to up

2017-06-07T13:17:37.948696+00:00 heroku[run.2087]: Awaiting client

2017-06-07T13:17:38.283581+00:00 heroku[run.2087]: Starting process with command `sh run.sh`

2017-06-07T13:17:52.807189+00:00 heroku[run.2087]: Client connection closed. Sending SIGHUP to all processes

2017-06-07T13:17:53.343009+00:00 heroku[run.2087]: Process exited with status 129

2017-06-07T13:17:53.359331+00:00 heroku[run.2087]: State changed from up to complete

2017-06-07T13:24:32.000000+00:00 app[api]: Build started by user XXXX

2017-06-07T13:24:43.090567+00:00 app[api]: Deploy YYYY by user XXXX

2017-06-07T13:24:43.090567+00:00 app[api]: Release v17 created by user XXXX

2017-06-07T13:24:32.000000+00:00 app[api]: Build succeeded

我不知道该怎样做才能让我的机器人从 Procfile 运行。 你能救我吗?

感谢。

1 个答案:

答案 0 :(得分:1)

尝试跑步:

$ heroku ps:scale worker=1

这将确保一个工作进程始终在运行。