我有三个jar文件,它们应该在嵌入式系统的后台永久运行。我实际上是在 ssh 会话中与jamvm -jar program.jar &
一起这样做的。但是 jar 文件在后台运行一天后退出,并且具有不可预测的行为。在帖子中 Linux:防止后台进程在关闭 SSH 客户端后停止他们建议nohup command > /dev/null 2>&1 &
,但我也有同样的行为。如何永久安全地在后台运行 jar 文件?如何确保 jar 文件退出以再次重新启动它?
Upstart、supervisor 和 systemd 将为您运行一个进程,并在失败时重新启动它们。哪个可用将取决于您的 Linux 发行版及其年龄。可能还有其他类似的服务。
从 systemd 文档中:
重启=
配置在服务进程退出、终止或达到超时时是否应重新启动服务。服务进程可能是主要的服务进程,但它也可能是使用 ExecStartPre=、ExecStartPost=、ExecStop=、ExecStopPost= 或 ExecReload= 指定的进程之一。当进程的死亡是 systemd 操作的结果(例如服务停止或重新启动)时,服务将不会重新启动。超时包括错过监视器"保持活动状态 ping"截止时间以及服务启动、重新加载和停止操作超时。