Сервис Upstart был запущен, остановлен и больше не будет работать

Я уверен, что кто-то где-то что-то изменил на сервере, но я не могу определить, что произошло. Имейте в виду, что служба работала отлично до начала этой недели. (ПРИМЕЧАНИЕ: это относится только к одному серверу, так как эта же служба отлично работает на 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/ (пользователь root, группа root, права доступа 644).

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

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

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

Я только что нашел журналы Upstart, и они утверждают -

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

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


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

1 ответ

Решение

Я предполагаю, что это длительная задача типа демона; если это однократная задача "запустить и остановить", вам нужно ключевое слово "задача".

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

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

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

Другие вопросы по тегам