Я обновил машину 12.04 до 14.04, используя do-release-upgrade
. Все прошло хорошо, как обычно, но впоследствии у этой конкретной машины возникла очень странная проблема:
См. Вывод для service tomcat6 status
:
root@box:/etc# service tomcat6 status
* Tomcat servlet engine is running with pid 8763
root@box:/etc# service tomcat6 status
* Tomcat servlet engine is running with pid 8763
root@box:/etc# service tomcat6 status
* Tomcat servlet engine is running with pid 8763
root@box:/etc# service tomcat6 status
* Tomcat servlet engine is running with pid 8763
Последовательный и правильный. (tomcat6
действительно работает как PID 8763).
Однако сценарий /etc/init.d/tomcat6
последовательно сообщает о другом исходе:
root@box:/etc# /etc/init.d/tomcat6 status
* Tomcat servlet engine is not running, but pid file exists.
root@box:/etc# /etc/init.d/tomcat6 status
* Tomcat servlet engine is not running, but pid file exists.
root@box:/etc# /etc/init.d/tomcat6 status
* Tomcat servlet engine is not running, but pid file exists.
root@box:/etc# /etc/init.d/tomcat6 status
* Tomcat servlet engine is not running, but pid file exists.
Что странно, потому что из-за отсутствия сценария upstart
сценарий init.d
фактически является тем, что service
вызов использует для информации. Удаление сценария init.d
подтверждает, что:
root@box:/etc# mv /etc/init.d/tomcat6 /root/
root@box:/etc# service tomcat6 status
tomcat6: unrecognized service
root@box:/etc# mv /root/tomcat6 /etc/init.d/
root@box:/etc# service tomcat6 status
* Tomcat servlet engine is running with pid 8763
К сожалению, модуль Puppet, который я использую для вызовов /etc/init.d/tomcat6
, и, как таковой, сообщает об отключении службы каждые 30 минут и выполняет перезапуск. Обновление модуля Puppet для использования вместо него вызова service
является немедленным и очевидным решением, но это не объясняет и не фиксирует тот факт, что один и тот же сценарий может иметь два возможных результата в зависимости от того, как этот сценарий вызывается.
Может кто-нибудь объяснить, почему это происходит, и / или подсказать, как вернуть результаты в согласованное состояние?