Удалось заставить его работать, но перепробовал так много вещей, не знаю точно, что это исправило (вероятно, ошибка в скрипте или конфигурации). Тем не менее, я многому научился и хотел поделиться, так как я не могу найти многого в интернет-безднах.
Похоже, что Ubuntu (и многие другие дистрибутивы, основанные на Ubuntu, включая Mint) перешли на Upstart для управления заданиями и услугами. Upstart включает совместимость с SysVinit (с использованием демонов /etc/init.d), которая по-прежнему может использовать update-rc.d для управления демонами (так что, если вы знакомы с этим использованием, вы можете продолжать его использовать). Метод Upstart заключается в использовании одного файла .conf в папке /etc/init. Мой файл SCRIPT.conf очень прост (я использую скрипт Python):
start on filesystem or runlevel [2345]
stop on runlevel [016]
exec python /usr/share/python-support/SCRIPT/SCRIPT.py
Этот простой файл полностью заменяет стандартный скрипт в /etc/init.d оператором case для предоставления функций [start|stop|restart|reload] и указателем на /usr/bin/SCRIPT. Вы можете видеть, что он включает в себя элементы управления уровнями выполнения, которые обычно можно найти в файлах /etc/rc*.d (таким образом исключая несколько файлов).
Я попробовал update-rc.d для создания необходимых файлов /etc/rc*.d/ для моего демона. Мой сценарий демона bash находится в /etc/init.d и включает команду start-stop-daemon, как и в моем первоначальном вопросе. (Эта команда также отлично работает с терминала.)
У меня были файлы /etc/rc*.d/, сценарий bash в файле /etc/init.d и файле /etc/init/SCRIPT.conf во время загрузки, и кажется, что Upstart, вероятно, сначала ищет файл .conf для его направления. потому что команда SysVinit service SCRIPT [start|stop|restart|reload]
возвращает неизвестный экземпляр, однако вы можете обнаружить, что процесс выполняется с ps -elf | grep SCRIPT_FILE
.
Одна интересная вещь, на которую стоит обратить внимание, это разветвление вашего демона при использовании .conf. Сценарий, как написано выше, порождает только одну вилку демона. Однако полная независимость от исходного сценария возможна при использовании expect fork
или expect daemon
и respawn
(см. Поваренную книгу Upstart). для справки). Их использование гарантирует, что ваш демон никогда не будет убит (по крайней мере, с помощью команды kill).
Я продолжал тестировать демон и процесс загрузки с помощью команды sudo initctl reload-configuration
. Это перезагружает файлы конфигурации, в которых вы можете протестировать свой демон с помощью команды sudo [start|stop|restart] SCRIPT
. Результат запуска команды:
$ sudo start SCRIPT
SCRIPT start/running, process xxxx
$ sudo restart SCRIPT
SCRIPT start/running, process xxxx
$ sudo stop SCRIPT
SCRIPT stop/waiting
Кроме того, в /var/log/upstart/SCRIPT.log есть хороший журнал, который дает вам полезную информацию для вашего демона во время загрузки. У меня все еще есть очень раздражающая ошибка, которая не позволяет root отображать сообщения osd с уведомлением-отправкой от моего демона. Мой файл журнала содержит предупреждение gtk (я открою еще один вопрос, чтобы попросить помощи).
Надеюсь, это поможет другим в разработке своих демонов.
person
mjpsr11
schedule
30.11.2013