Я создаю сценарий upstart для выполнения написанной мной программы на python. Когда служба запускается, я хочу повторить starting service - script.py...
и повторить идентификатор процесса программы после запуска.
Точно так же я хочу повторить stopping service - script.py...
, когда он останавливается.
У меня есть это до сих пор (помните, что я новичок в этом) ...
#Name: script.conf
description "An upstart config to run ~/applications/systems/script.py as an OS service."
author "Corey F. - 12/2011"
pre-start script
echo 'starting service - script.py...'
end script
post-stop script
echo 'stopped service - script.py...'
end script
start on runlevel [2534]
stop on runlevel [!2534]
exec /home/lv_admin/applications/systems/script.py
respawn
Я думаю, что мне нужна команда 2534 status
для получения processid и последнего известного состояния службы (как описано здесь: http://upstart.ubuntu.com/getting-started.html [ 114]) но я не уверен, куда это поставить ...
Кроме того, как мне зарегистрировать проблемы с событиями upstart в конкретном файле во время выполнения этого файла upstart script.conf? Мне нужно знать, есть ли у выскочки проблемы с запуском процесса.
Хорошо, немного старый вопрос, но давайте ответим на него из соображений полноты: -)
Допустим, вы сохранили эту работу в /etc/init/myapp.conf
, тогда имя работы будет myapp
. Запрос статуса задания (и идентификатора процесса) будет просто: status myapp
(как root) или sudo status myapp
в типичном пользовательском случае Ubuntu.
Ошибки инициализации переходят в dmesg
по умолчанию, поэтому выполнение dmesg | grep "init:"
дает вам журнал. Более подробное ведение журнала можно включить с помощью sudo initctl log-priority info
. Уровни отладки, более подробные, чем спам, будут спамить и сбивать вас с толку: -)
Выполнение sudo stop myapp
, sudo start myapp
мгновенно дает вам обратную связь об успехе плюс идентификатор процесса. Если вы получили init: unknown job
или около того, Upstart не удалось выполнить синтаксический анализ файла конфигурации, и точную строку и причину можно найти в dmesg.