Безопасно длительный процесс Java в фоновом режиме

У меня есть три файла JAR, которые должны работать вечно в фоновом режиме во встроенной системе. Я действительно делаю это с jamvm -jar program.jar & через ssh-сессию. Но файл jar завершается через один день в фоновом режиме и ведет себя непредсказуемо. В постах Linux: не допускайте остановки фонового процесса после закрытия SSH-клиента, который они предлагают nohup command > /dev/null 2>&1 &, но у меня тоже такое же поведение. Как я могу безопасно запускать файлы JAR в фоновом режиме навсегда? Как я могу убедиться, что JAR-файл завершился, чтобы перезапустить его снова?

1 ответ

Upstart, http://supervisord.org/ и systemd запустят для вас процесс и перезапустят их в случае сбоя. Доступность зависит от вашего дистрибутива Linux и его возраста. Возможно, есть и другие подобные сервисы.

Из документации systemd:

Restart =

Определяет, будет ли служба перезапущена, когда процесс службы завершается, завершается или по истечении времени ожидания. Сервисный процесс может быть основным сервисным процессом, но он также может быть одним из процессов, указанных в ExecStartPre=, ExecStartPost=, ExecStop=, ExecStopPost= или ExecReload=. Когда смерть процесса является результатом работы systemd (например, остановка или перезапуск службы), служба не будет перезапущена. Тайм-ауты включают в себя пропущенный крайний срок проверки активности "проверки активности" и время ожидания запуска, перезагрузки и остановки службы.

Другие вопросы по тегам