我有一个简短的 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 &
)
脚本.sh:
#!/bin/bash
while true; do
echo `date`
sleep 30
done
为什么 php 脚本在后台启动后停止,而 bash 脚本没有?什么可能导致这种不同的行为?