I have a script I'm trying to launch with
php ./Script.php &
The task goes into the background but it is stopped. When I try to run it with bg it simply stays stopped.
$ jobs
[1]+ Stopped php ./Script.php
$ bg
[1]+ php ./Script.php &
[1]+ Stopped php ./Script.php
$
ps shows the job state as T
$ ps ax | grep Script
951 pts/5 T 0:00 php ./Script.php
cat /proc/PID/wchan shows "pipe_wait"
Update:
This happens with any PHP script, even <?php sleep(1000)
;
Update:
Thanks for all the great answers and comments. I understand why this is happening on a technical level now, but I'm not sure what about some versions of PHP are causing this. But, that is not a *nix question.
Best Answer
Almost certainly the command tried to read from the terminal when it was not in the foreground process group. This will cause the kernel to send SIGTTIN to the process, which by default will stop the process. A simple test would be to redirect stdin to /dev/null. If the process runs in the background without being stopped then the problem was SIGTTIN as described.