Debian 32 与 Ubuntu 64 上的 PHP CLI 进程标题截然不同
我有两台服务器 Debian Squeeze 32 和 Ubuntu 11.10 Server 64。使用相同命令的相同脚本的行为非常不同。
脚本 test.php:
<?php for ($i = 0; $i < 5; $i++) { echo $i, "\n"; sleep(1); }
命令:
php -q test.php &
ps | grep php
Debain:我看到正在打印数字,并且进程标题为 php -q test.php
正如预期的那样。 pidof "php -q test.php"
工作正常。
Ubuntu:没有数字;进程标题是php
。 pidof "php -q test.php"
不起作用,我无法使用 pidof php
。
Ubuntu 有什么问题吗?
更新哇! pgrep -f "php -q test.php"
效果很好,而 pidof "php -q test.php"
则不然。
更新 2 我不确定这是否适用,但在 Debian 下,我在常规控制台中工作,而 Ubuntu 则通过 SSH 访问。
I have two servers Debian Squeeze 32 and Ubuntu 11.10 Server 64. The same script with the same command behaves very different.
Script test.php:
<?php for ($i = 0; $i < 5; $i++) { echo $i, "\n"; sleep(1); }
Command:
php -q test.php &
ps | grep php
Debain: I see numbers being printed and process title is php -q test.php
as expected. pidof "php -q test.php"
works fine.
Ubuntu: No numbers; process title is php
. pidof "php -q test.php"
does not work and I can't use pidof php
.
What's wrong with Ubuntu?
Update WOW! pgrep -f "php -q test.php"
works well while pidof "php -q test.php"
doesn't.
Update 2 I'm not sure if this may apply, but under Debian I'm working in a regular console, while Ubuntu is being accessed by SSH.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
丢失输出的问题是已知的,并且是由 readline 扩展引起的。
来自 PHP 手册:
Debian 和 Ubuntu 之间的区别在于,在 Ubuntu 的 PHP 软件包中启用了 readline,而在 Debians 软件包中则启用了 readline它已被禁用。
因此,您的问题的解决方案 - 尽管您没有使用管道 - 是:
如果您将标准输入重定向到
/dev/null
,数字将按预期打印在终端上。您还可以阅读此错误报告
The problem with missing output is known and caused by the readline extension.
From the PHP manual :
The difference between Debian and Ubuntu is that in Ubuntu's PHP package readline is enabled and in Debians package it is disabled.
So the solution to your problem - although your are not using a pipe - is:
If you redirect stdin to
/dev/null
the numbers will be printed on terminal as expected.You may also read this bugreport