Назад | Перейти на главную страницу

Служба 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/ (корень пользователя, корень группы, права доступа 644).

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

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

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

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

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

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


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

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

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

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

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