У меня есть VPS с некоторыми приложениями Java (сделанные с "Play Framework"), работающие на портах 9000, 9001, 9002 и 9003. VPS Provider (iPage) время от времени неожиданно перезагружает серверы, оставляя все четыре процесса недоступными.
Запускаемые мной процессы запускаются
nohup ./start -Dhttp.port=9000,nohup ./start -Dhttp.port=9001,nohup ./start -Dhttp.port=9002иnohup ./start -Dhttp.port=9003
со всеми четырьмя start пусковыми программами, созданными "Play" и расположенными в разных папках (внутри /opt).
Каждый раз, когда iPage перезагружает мой VPS, все четыре папки сохраняют свой файл «RUNNING_PID» со своим прежним PID, поэтому я должен вручную удалить эти файлы, чтобы иметь возможность снова их скопировать.
Я проверял этот ответ на относительно похожий вопрос (как мне написать bash-скрипт для перезапуска процесса, если он умирает?) (без указания порта и стиля nohup , я думаю) без успеха.
Это то, что я сделал до сих пор:
Сделал файл
tryReboot(сохраненный в/opt/myJavaApp9000/) со следующим содержимым:until start -Dhttp.port=9000; do echo "9000 process crashed with exit code $?. Respawning.." >&2 sleep 1 doneДобавлен
@reboot /opt/myJavaApp9000/tryRebootв файлcrontabс помощьюcrontab -e
После перезагрузки сервера (через iPage Reboot) все четверо сохранили свои файлы RUNNING_PID , но ни один из них не был перезапущен. В чем может быть проблема?
