Linuxで次のクエリを使用して、サーバーの負荷を取得します。
w | head -n 1 | awk '{print $12}'
ここで、perlスクリプトを介してクエリを実行し、ブラウザで出力を出力したいと思います。それ、どうやったら出来るの?
以下は、4つではなく1つのプロセスを生成します。
open(my $pipe, '-|', 'w') or die $!;
my $line = <$pipe>;
close($pipe);
my $load = (split ' ', $line)[11];
close($pipe)
w
それ以上の出力の送信 を停止するパイプを閉じます。split ' ', EXPR
EXPRを空白で分割します。(EXPR)[11]
EXPRによって12番目のアイテムが返されます。バッククォートを使用するだけで、シェルコマンドの出力をキャプチャできます。
chomp( my $load = `w | head -n 1 | awk '{print \$12}'` );
エスケープする必要があります。$
エスケープしないと、Perlはコマンドを送信する前に変数を補間しようとします。
system()
出力が必要ない場合は、外部コマンドを呼び出すための推奨される方法です。
ただし、簡単なユーティリティスクリプト以上のものを作成している場合は、通常、システムコマンドを同等のPerlコードに置き換えることをお勧めします。一般的なシェルコマンドとタスクの機能を複製する利用可能なモジュールがたくさんあります。
必要なのは
my $load = (split ' ', `w`, 13)[11];
perlでシステムコマンドを実行するには、こちらを参照してください。