Por que “php x.php &” leva a um processo em segundo plano STOPPED

2

x.php:

<?php
sleep(15);
?>

console:

$ php x.php &
[1] 5742
[1]+  Stopped                 x.php

Resultado: um processo "STOPPED" - está lá para sempre até eu enviar um sinal TERM e depois CONT .

O que eu preciso: o processo para terminar e sair depois de 15 segundos, então eu não vejo isso em top ou htop .

Sistema: Ubuntu 12.04 LTS no VirtualBox; php-fpm

    
por Meglio 08.01.2014 / 19:34

1 resposta

4

Usando strace , vejo que o programa está recebendo um sinal SIGTTOU , o que significa que o processo estava em segundo plano e tentou gravar no terminal ou, neste caso, alterar um de seus modos.

ioctl(0, SNDCTL_TMR_STOP or SNDRV_TIMER_IOCTL_GINFO or TCSETSW, {B38400 opost isig icanon echo ...}) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
--- SIGTTOU {si_signo=SIGTTOU, si_code=SI_KERNEL} ---
--- stopped by SIGTTOU ---

Para contornar isso, defina a entrada para null:

$ php x.php < /dev/null &

A pergunta é a mesma que esta: O script PHP não será executado no fundo

    
por 09.01.2014 / 03:06