У меня установлена supervisord
на моем Ubuntu 10.04, и он непрерывно запускает процесс Java и должен лечить (перезагружать) процесс, когда он каким-то образом умирает или падает.
На моем htop
я посылаю сигналы SIGKILL, SIGTERM, SIGHUP, SIGSEGV этому процессу Java и наблюдаю файл /etc/logs/supervisord.log
, и он говорит:
08:09:46,182 INFO success: myprogram entered RUNNING state,[...]
08:38:10,043 INFO exited: myprogram (exit status 0; expected)
В 08:38
Я завершаю процесс с помощью SIGSEGV. Почему он завершается с кодом 0 и почему supervisord
его вообще не перезапускает?
Все мои supervisord.conf
об этой конкретной программе выглядят следующим образом:
[program:play-9000]
command=play run /var/www/myprogram/ --%%prod
stderr_logfile = /var/log/supervisord/myprogram-stderr.log
stdout_logfile = /var/log/supervisord/myprogram-stdout.log
Процесс работает очень хорошо, когда я запускаю supervisord, но не лечится.
Кстати, есть идеи, как запустить supervisord как сервис, чтобы он автоматически запускался при перезагрузке всей системы?