У меня есть машина Ubuntu 12.04, в которой я запускаю свой сервер приложений C ++, который я контролирую с помощью сценария выскочки. Значение, когда мой сервер приложений падает, мой скрипт upstart перезапустит их автоматически, и всякий раз, когда моя машина ubuntu перезагрузится / перезапустится, мой скрипт upstart снова перезапустит мой сервер приложений.
Ниже мой сценарий выскочки:
start on runlevel [2345]
stop on runlevel [016]
chdir /opt/process/process_server
respawn
post-start script
echo "App server started at `date +"%F %T"` on `hostname -f`" | mailx -r "abc@host.com" -s "Process Started" "pqr@host.com"
end script
post-stop script
sleep 30
end script
limit core unlimited unlimited
limit nofile 8092 8092
setuid caprti
exec ./process_server --config_file=../config/process.init
Теперь странно, я вижу это по крайней мере дважды - моя машина ubuntu была перезапущена, и я не знаю, как и кто это сделал, но мой сервер приложений не был перезагружен вообще, и я не знаю, почему ? Я тестировал это несколько раз самостоятельно, перезагружая тот же самый ящик, набрав "sudo reboot", и всякий раз, когда эта машина возвращается, я вижу, что мой сервер приложений перезапускается автоматически.
При каких условиях во время перезагрузки моего Ubuntu не приведет к тому, что мой сервер приложений будет перезагружен из моего выше сценария выскочки? Есть ли что-нибудь, что мне не хватает в моем сценарии Upstart?
Также как я могу проверить, что мой сценарий Upstart пытался перезагрузить мой сервер приложений во время последней перезагрузки, но по какой-то причине он не удался, если это то, что произошло с моим для тех двух раз?
Отладка
По умолчанию журналы системного хранения файлов выскочки в /var/log/upstart. Как правило, он хранит имя_файла_файла в файле /var/log/upstart. Посмотрите на /var/log/upstart/file.log. где file.log - это журнал вашего файла инициализации /etc/init/file.conf. вы можете легко определить, что вам не хватает в сценарии выскочки.Отладка init-checkconf /etc/init/file.conf или с большим режимом отладки init-checkconf -d /etc/init/file.conf
использует start on local-filesystems или start on (local-filesystems and net-device-up IFACE!=lo) вместо start on runlevel [2345]. вы выполняете команду, которая нуждается в локальной файловой системе, и если сетевое взаимодействие также не определено, чем добавление сети или проверка других требований. все еще проблема, а затем запись в журнал или ошибка.