web-dev-qa-db-ja.com

PHP systemdを使用したスクリプト

私はsystemdを使い始めたばかりで、同僚から与えられたスクリプトに問題があります。このスクリプトはDebian 7ではバックグラウンドプロセスとして機能しましたが、Debian 8では機能しませんでした。私はそれをsystemdに書き直すことにしました。

これはchunk8.serviceにあります(/etc/systemd/systemにあります):

[Unit]
Description=Chunk-search Daemon
Requires=mysql.service Apache2.service

[Service]
PIDFile=/var/run/chunkrm8.pid
ExecStart=/usr/bin/php /var/www/chunkrm8/task_pool.php > /dev/null 2>/dev/null
Type=forking
KillMode=process

[Install]
WantedBy=multi-user.target

システムを再起動すると(またはsystemctl start chunk8.serviceを実行すると)、次のようになります。

● chunk8.service - Chunk-search Daemon
   Loaded: loaded (/etc/systemd/system/chunk8.service; enabled)
   Active: failed (Result: timeout) since Tue 2016-04-19 16:21:20 MSK; 1min 1s ago

私は何を間違っていますか?前もって感謝します。

3
maaboo

指定したType=forkingですが、開始したプログラムはタイムアウト期間内にフォークされなかったため、systemdはそれが適切に起動しなかったと見なし、強制終了して、サービスに失敗のマークを付けました。

プロセスがそれ自体をデーモン化することを確信していますか? PHPスクリプトがこれを行うのは珍しいことです。おそらくType=simple代わりに。

5
Michael Hampton