Новомодная услуга работала, остановилась и больше не будет работать

Я чувствую уверенность, что кто-то, где-нибудь изменил что-то на сервере, но я не могу определить то, что произошло. Следует иметь в виду, что сервис работал отлично до начала этой недели. (ОТМЕТЬТЕ: это характерно для одного сервера, поскольку эта та же услуга работает очень хорошо на 4 других серверах.)

Проблема...

У меня есть следующий сервис для выполнения Сценария PHP

start on filesystem and net-device-up IFACE=eth0
respawn

#exec echo OARSUDP ran at  `date` >> /var/log/oarsudp.log

script
    sudo -u root /usr/bin/php -f /home/src/www-server/services/job_info_parser.php
end script

Если я пытаюсь запустить его, я получаю сообщение -

sudo service oarsudp start
oarsudp start/running, process 2604

Если я сразу проверяю состояние, я добираюсь -

sudo service oarsudp status
oarsudp stop/waiting

Вещи я попробовал...

Я добавляю exec строка для отправки комментария в журнал. Это только работает когда script теги и его содержание комментируются.

Я выполнил строку PHP в теге script из командной строки, и это работает отлично, не бросая ошибок.

Я подтвердил, что полномочия корректны в /etc/init/ (пользовательский корень, корень группы, полномочия 644).

Я попытался менять имя сервиса, просто потому что я читал сообщение о некоторых конфликтующих именах, и я хватался за солому.

Дополнительная информация...

Кажется, что сервис пытается повторно метать икру, отсылая сообщение журнала в exec несколько раз, прежде чем сервис умирает.

Я просто определил местоположение журналов Выскочки, и они заявляют -

"Не удалось открыть входной файл:/home/src/www-server/services/job_info_parser.php".

Я попытался изменить полномочия, группу и владельца, но ничто не работало.


Кто-либо когда-либо видел, что сервисный сценарий прекращает работать как это? Если так, какова была причина и как я могу зафиксировать ее? Или я - общий идиот, представив проблему в рамках сценария или сервиса сам?

0
задан 13 January 2015 в 21:07
1 ответ

Здесь я предполагаю, что это длительная задача типа демона; если это одноразовая задача «запустить и остановить», тогда вам понадобится ключевое слово «задача».

1) exec и script, насколько мне известно, взаимоисключающие; это два разных способа указать, что запускать для этого задания.

2) Я не вижу причин для sudo; upstart запускается от имени пользователя root, и вы можете использовать setuid / setgid для изменения пользователя / группы, выполняемой заданием, как если бы оно не было root.

Я подозреваю, что sudo сбивает с толку или скрывает то, что на самом деле происходит; upstart очень внимательно относится к отслеживанию идентификаторов запущенных задач. См. http://upstart.ubuntu.com/cookbook/#expect для некоторых кровавых подробностей; фактически, посмотрите на всю эту страницу некоторые возможные другие подсказки

1
ответ дан 4 December 2019 в 17:05

Теги

Похожие вопросы