Запуск демона PHP из сценария инициализации LSB с помощью start-stop-daemon

Я пишу сценарий инициализации lsb (по общему признанию, то, чего я никогда не делал с нуля), который запускает сценарий php, который демонизирует себя. PHP-скрипт начинается примерно так:

#!/usr/bin/env php
<?php
/* do some stuff */

Затем он запускается так в сценарии инициализации:

# first line is args to start-stop-daemon, second line is args to php-script
start-stop-daemon --start --exec /path/to/executable/php-script.php \
  -- --daemon --pid-file=$PIDFILE --other-php-script-args

--daemon флаг заставляет скрипт php отключаться и запускаться как сам демон, а не полагаться на start-stop-daemon отделить это.

Вот как он (пытается) остановить это в скрипте инициализации:

start-stop-daemon --stop --oknodo --exec /path/to/executable/php-script.php \
  --pidfile $PIDFILE

Проблема в том, что когда я пытаюсь остановиться через скрипт инициализации, он дает мне следующее:

$ sudo /etc/init.d/my-lsb-init-script stop
 * Stopping My Project
No /path/to/executable/php-script.php found running; none killed.
   ...done.

Быстрый взгляд на ps говорит мне, что, хотя сам скрипт php является исполняемым, он работает как php <script> а не само имя скрипта, которое не дает старт-стоп-демону его увидеть. Файл PID даже создается, но он, кажется, игнорирует его и вместо этого пытается найти +kill по имени процесса.

$ ps ax | grep '/path/to/executable/php-script.php'
 2505 pts/1    S      0:01 php /path/to/executable/php-script.php --daemon --pid-file /var/run/blah/blah.pid --other-php-script-args
 2507 pts/1    S      0:00 php /path/to/executable/php-script.php --daemon --pid-file /var/run/blah/blah.pid --other-php-script-args
 2508 pts/1    S      0:00 php /path/to/executable/php-script.php --daemon --pid-file /var/run/blah/blah.pid --other-php-script-args
 2509 pts/1    S      0:00 php /path/to/executable/php-script.php --daemon --pid-file /var/run/blah/blah.pid --other-php-script-args
 2518 pts/1    S      0:01 php /path/to/executable/php-script.php --daemon --pid-file /var/run/blah/blah.pid --other-php-script-args
$ cat /var/run/blah/blah.pid
2518

Я совершенно не понимаю что-то здесь? Или есть простой способ обойти это?

1 ответ

Решение

Правильная остановка:

start-stop-daemon --stop --oknodo --pidfile $PIDFILE
Другие вопросы по тегам