Php
從帶有 start-stop-daemon 的 LSB 初始化腳本啟動 PHP 守護程序
我正在編寫一個 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 腳本分離並作為守護程序本身執行,而不是依賴於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>
以腳本名稱而不是腳本名稱本身執行,這使 start-stop-daemon 無法看到它。PID文件甚至正在生成,但它似乎忽略它並嘗試通過程序名稱查找+殺死。$ 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
我在這裡完全誤解了什麼嗎?或者有沒有一種簡單的方法來解決這個問題?
正確的停止:
start-stop-daemon --stop --oknodo --pidfile $PIDFILE