【发布时间】:2015-01-03 06:08:37
【问题描述】:
我正在使用 php5.3.3 在 CentOS 6.5 上运行一个简单的 PHP 脚本
#!/usr/bin/env php
<?php
echo "hello"."\n";
return 0;
?>
我的问题是,如果我执行./testscript,它运行良好,如果我执行nohup ./testscript &,它运行良好,如果我执行./testscript < /dev/null > /dev/null &,它运行良好(没有输出重定向也是如此)。
但是如果我这样做./testscript &,脚本就会停止(并且没有输出):
[1]+ Stopped ./testscript
据我了解,这是因为 php 期望来自 STDIN 的一些输入。但问题是为什么?如您所见,在这个简单的脚本中没有什么需要输入的内容,而且我在 Debian 上的 php5.4 上也没有这种行为。这种行为变化是否来自 php 版本或操作系统? 为什么会这样?有没有办法改变它并允许我在后台运行脚本而不必添加 /dev/null 作为 STDIN ?
谢谢!
【问题讨论】:
-
试试
./testscript > output.log 2>&1 &。它应该停止,但至少你可以在它崩溃之前看到它的输出。 -
@hellcode:-1。这就是必须构造 shell 脚本的方式。没有shebang,没有
./foo.php-type 调用。 -
@Mr.Llama: output.log 这样是空的。并且脚本由于 STDIN 停止..
-
相关(CLI 版本构建时包含 readline):stackoverflow.com/questions/8194755/…