4

このコマンドを実行しようとしていました

echo exec("top");

echo exec("/usr/bin/top");

どちらも機能しません (空白の出力が返されます)

誰かが理由を知っていますか?

4

5 に答える 5

8

top は、スクリプトから実行するのではなく、端末で実行することを意図した対話型プログラムであるためです。出力を CPU 使用率でソートする引数を指定して 'ps' コマンドを実行することをお勧めします。 http://www.devdaily.com/linux/unix-linux-process-memory-sort-ps-command-cpu

于 2011-07-11T16:52:24.030 に答える
7

実際に top を呼び出して、その出力をエコーすることができます。私のために働いたコード:

passthru('/usr/bin/top -b -n 1');

-b - バッチ モードで実行中

-n 1 - 反復は 1 回のみ

于 2012-03-30T08:45:52.470 に答える
6

おそらく動作しますが、exec()何も返されません。マニュアルを読む:exec()

$output = null;
exec('top', $output);
echo $output;

しかし、別の問題topがあります。それ自体では終了しません。割り込み信号を送信する必要があるため、ここでは使用できません (今気づいたのですが、これも問題ありqません)。

1つの解決策はtop、1回の反復後に停止することです

$output = null;
exec('top -n 1', $output);
var_dump($output);
于 2011-07-11T16:50:39.540 に答える
3

変数に入れたい場合:

ob_start();
passthru('/usr/bin/top -b -n 1');
$output = ob_get_clean();
ob_clean();
于 2013-06-24T03:09:07.190 に答える
0

私が使用した:

$cpu = preg_split('/[\s]+/', shell_exec('mpstat 1 1'));
$cpu = 100-$cpu[42];

100% からアイドル時間を引いたもの。

于 2016-08-02T20:43:34.900 に答える