0

Linuxで次のクエリを使用して、サーバーの負荷を取得します。

w | head -n 1 | awk '{print $12}'

ここで、perlスクリプトを介してクエリを実行し、ブラウザで出力を出力したいと思います。それ、どうやったら出来るの?

4

4 に答える 4

3

以下は、4つではなく1つのプロセスを生成します。

open(my $pipe, '-|', 'w') or die $!;
my $line = <$pipe>;
close($pipe);
my $load = (split ' ', $line)[11];
  • close($pipe)wそれ以上の出力の送信 を停止するパイプを閉じます。
  • split ' ', EXPREXPRを空白で分割します。
  • (EXPR)[11]EXPRによって12番目のアイテムが返されます。
于 2013-02-27T11:23:59.417 に答える
1

バッククォートを使用するだけで、シェルコマンドの出力をキャプチャできます。

chomp( my $load = `w | head -n 1 | awk '{print \$12}'` );

エスケープする必要があります。$エスケープしないと、Perlはコマンドを送信する前に変数を補間しようとします。

system()出力が必要ない場合は、外部コマンドを呼び出すための推奨される方法です。

ただし、簡単なユーティリティスクリプト以上のものを作成している場合は、通常、システムコマンドを同等のPerlコードに置き換えることをお勧めします。一般的なシェルコマンドとタスクの機能を複製する利用可能なモジュールがたくさんあります。

于 2013-02-27T11:19:19.483 に答える
0

必要なのは

my $load = (split ' ', `w`, 13)[11];
于 2013-02-27T12:29:12.037 に答える
0

perlでシステムコマンドを実行するには、こちらを参照してください。

于 2013-02-27T11:23:27.380 に答える