Сервис 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/ для некоторых кровавых подробностей; на самом деле, посмотрите всю эту страницу для некоторых других возможных подсказок