私は短いphpユーティリティスクリプトを持っています.cliから単純に実行します:
php myscript.php
スクリプトは常に実行されており、定期的にいくつかのタスクを実行しています (質問には関係ありません)。ユーザーからの入力は必要ありません。CTRLそれを実行した後、私は通常+を押しzてから実行bg
し、プロセスをバックグラウンドに置きます。すべて問題ありません。
次のように実行すると:
php myscript.php &
スクリプトは開始時にバックグラウンドに置かれますが、停止状態にも置かれます。例:
[1] 11513
[1]+ Stopped php myscript.php
この時点で実行bg
しても役に立ちません。それを機能させるには、 を実行しfg
、次にCTRL+を実行する必要がzありbg
ます。
これはphpスクリプトです:
<?
while(true){
echo 'hi '.time()."\n";
sleep(30);
}
?>
私の問題は、システムが停止するため、バックグラウンドで直接実行できないことです。理由がわかりません。どうすればこれを修正できますか?
アップデート:
同じスクリプトの bash バージョンを作成しました。最後に & を付けて起動するだけで、実行してバックグラウンドで実行できます (停止せずscript.sh &
に実行中) 。
script.sh:
#!/bin/bash
while true; do
echo `date`
sleep 30
done
バックグラウンドで起動した後にphpスクリプトが停止し、bashスクリプトが停止しないのはなぜですか? この異なる動作の原因は何ですか?