У меня есть 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
, но ни один из них не был перезапущен. В чем может быть проблема?