【发布时间】:2013-02-04 18:19:16
【问题描述】:
我尝试使用这种可能的解决方案,但没有任何运气:
$test = passthru('/usr/bin/top -b -n 1');
preg_match('([0-9]+ total)', $test, $matches);
var_dump($matches);
该代码显示以下文本:
top - 19:15:43 up 31 days, 23 min, 1 user, load average: 0.00, 0.01, 0.05 Tasks: 85 total, 1 running, 84 sleeping, 0 stopped, 0 zombie Cpu(s): 0.1%us, 0.0%sy, 0.0%ni, 99.8%id, 0.1%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 247980k total, 224320k used, 23660k free, 68428k buffers Swap: 521212k total, 37120k used, 484092k free [...] 0.4 0:00.00 top array(0) { }
如何获取某些信息,例如任务总数,使其仅显示例如 84 total?
提前致谢。
【问题讨论】:
-
passthru()不返回输出,而是将其发送到浏览器。如果要在变量中捕获输出,请使用exec()。 -
想知道你是否试试这个:/usr/bin/top -b -n 1 | grep 任务:| awk -F' ' '{打印 $2 " " $3}'
-
Barmat:感谢您的回答,但
exec()根本没有给我任何输出。 Satish:不,但我现在测试了它,它给了我错误 500(内部服务器错误);passthru("/usr/bin/top -b -n 1 | grep Tasks: | awk -F' ' '{print $2 " " $3}'")。如果我在该命令中使用exec()而不是passthru(),我会遇到同样的错误 -
您需要转义嵌入的双引号,以免它们结束 PHP 字符串。
-
exec()只返回输出的最后一行。如果要查看其他行,则必须传递可选的第二个参数。
标签: php linux passthru system-information