0

我想用 php 执行一个 awk linux 命令,命令是

 mpstat | awk '$12 ~ /[0-9.]+/ { print 100 - $12 }'

我用 linux 执行它,它可以工作,它给了我演示中的 cpu 使用情况,我在 php 中尝试这个:

$cmd= system("mpstat | awk '$12 ~ /[0-9.]+/ { print 100 - $12 }'",$retval);
echo $retval;

$cmd= passthru(" mpstat | awk '$12 ~ /[0-9.]+/ { print 100 - $12 }'",$retval);
 echo $retval;

它不起作用,我对它进行了一些搜索,所以我将 awk 命令放入变量中然后执行它:

$var='$12 ~ /[0-9.]+/ { print 100 - $12 }';
$cmd=  exec('mpstat | awk"$var"',$retval);
echo $retval;

并且输出总是 Array

4

2 回答 2

1

我写了一个简短的程序来说明差异:

<?php
$cmd = system("ls", $retval);
echo "Cmd: " . $cmd . "\n";
echo "Retval: " . $retval . "\n";
?>

输出:

prog.php
Cmd: prog.php
Retval: 0
于 2013-05-19T17:50:21.120 回答
0

我通常将popen用于这些目的。

例子:

$handle = popen('mpstat | awk \'$12 ~ /[0-9.]+/ { print 100 - $12 }\' 2>&1', 'r');
$read = fread($handle, 8192);
var_dump($read);
pclose($handle);
于 2013-05-19T18:20:51.267 回答