![在 Linux 上运行多个后台 Java 进程](https://linux22.com/image/581670/%E5%9C%A8%20Linux%20%E4%B8%8A%E8%BF%90%E8%A1%8C%E5%A4%9A%E4%B8%AA%E5%90%8E%E5%8F%B0%20Java%20%E8%BF%9B%E7%A8%8B.png)
我有一个 jar 文件,它会持续运行并对各种事件做出反应。我需要创建此 jar 的多个实例,在启动时向其传递参数,并让其在 shell 会话、重新启动等期间继续运行。我计划编写一个 init.d 脚本,其中包含我需要的每个实例的命令,为每个实例传递适当的参数,并让其在启动时执行。这听起来像是正确的方法吗?
其中一个实例可能会卡住或崩溃,我需要手动进入并重新启动它。我还想知道是否有办法命名创建的每个进程,这样当我查看 top 时,我可以确定哪个进程是哪个?
答案1
初始化脚本听起来不错。不过,你应该通过 /etc/ 中的某些配置对其进行参数化。
您可以在启动每个 Java 进程后获取它们的 PID,然后永久检查所有进程是否仍在运行,如果没有,则重新启动。最好使用应用程序级别监控(取决于进程执行的操作)并据此采取行动。进程仍然存在并不意味着它在做它应该做的事情。