J'ai un VPS avec quelques applications Java (réalisées avec "Play Framework") fonctionnant sur les ports 9000, 9001, 9002 et 9003. Le fournisseur de VPS (iPage) redémarre les serveurs de manière inattendue de temps en temps, laissant les quatre processus hors service.
Les processus que j'exécute sont lancés par
-
nohup ./start -Dhttp.port=9000
, -
nohup ./start -Dhttp.port=9001
, -
nohup ./start -Dhttp.port=9002
et nohup ./start -Dhttp.port=9003
avec les quatre start
réalisés par "Play" et situés dans différents dossiers (à l'intérieur de /opt
).
Chaque fois qu'iPage redémarre mon VPS, les quatre dossiers conservent leur fichier 'RUNNING_PID' avec leur ancien PID, je dois donc supprimer manuellement ces fichiers pour pouvoir les remettre en place.
Je vérifiais cette réponse d'une question relativement similaire ( Comment écrire un bash script pour redémarrer un processus s'il meurt ? ) (sans spécifier de port et nohup
style, je suppose) sans succès.
C'est ce que j'ai fait jusqu'à présent :
-
Fait un
tryReboot
(enregistré dans/opt/myJavaApp9000/
) avec le contenu suivant :until start -Dhttp.port=9000; do echo "9000 process crashed with exit code $?. Respawning.." >&2 sleep 1 done
-
Ajouté
@reboot /opt/myJavaApp9000/tryReboot
aucrontab
en utilisantcrontab -e
Après avoir redémarré le serveur (via iPage Reboot), les quatre ont gardé leur RUNNING_PID
mais aucun d'entre eux n'a redémarré. Quel pourrait être le problème ?