x.php:
<?php
sleep(15);
?>
安慰:
$ php x.php &
[1] 5742
[1]+ Stopped x.php
结果:一个“已停止”的过程 - 它会一直存在,直到我发送一个TERM
信号CONT
。
我需要的是:top
该过程在 15 秒后完成并退出,因此我在或中看不到它htop
。
系统:VirtualBox 中的 Ubuntu 12.04 LTS;php-fpm
答案1
使用strace
我看到程序正在收到一个信号SIGTTOU
,这意味着该进程在后台并试图写入终端,或者在这种情况下,更改其一种模式。
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 ---
为了解决这个问题,请将输入设置为空:
$ php x.php < /dev/null &
这个问题和这个问题一样:PHP 脚本不会在后台运行