Iniciando um daemon PHP a partir de um script de init LSB com start-stop-daemon

6

Estou escrevendo um script de inicialização do lsb (reconhecidamente algo que nunca fiz do zero) que lança um script php que se daemoniza sozinho. O script php começa assim:

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

É então iniciado assim no script de inicialização:

# 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

O --daemon flag faz com que o script php separe & executado como um daemon, em vez de depender de start-stop-daemon para separá-lo.

É assim (tentando) parar no script de inicialização:

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

O problema é que, quando tento parar por meio do script de inicialização, isso me dá isto:

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

Uma olhada rápida em ps me diz que, embora o próprio script php seja executável, ele é executado como php <script> em vez do próprio nome do script, o que impede que o daemon start-stop o visualize. O arquivo PID está sendo gerado, mas parece ignorá-lo e tentar encontrar + kill pelo nome do processo.

$ 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

Estou completamente entendendo mal alguma coisa aqui? Ou há uma maneira fácil de contornar isso?

    
por EvanK 01.02.2011 / 18:51

1 resposta

6

Parada correta:

start-stop-daemon --stop --oknodo --pidfile $PIDFILE
    
por 01.02.2011 / 19:31