从具有start-stop-daemon的LSB init脚本启动PHP守护程序

Modified on: Fri, 23 Aug 2019 13:40:02 +0800

我正在编写一个lsb init脚本(不可否认的是我从未做过的事情),它启动了一个自我守护的php脚本。 php脚本就像这样开始:

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

然后在init脚本中启动它:

# 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脚本分离&amp;作为守护进程本身运行,而不是依赖start-stop-daemon来分离它。

这是(试图)在init脚本中停止它的方式:

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

问题是,当我尝试通过init脚本停止时,它给了我这个:

$ 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 &lt;script&gt;运行,而不是脚本名称本身,这使得start-stop-daemon无法看到它。 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

我在这里完全误解了什么吗?或者有一种简单的方法可以解决这个问题吗?

作者:user130370,EvanK

最佳答案

正确停止:

start-stop-daemon --stop --oknodo --pidfile $PIDFILE
作者:alvosu

相关问答

添加新评论