我用下面的查詢在Linux上獲取服務器負載:如何在perl中實現linux查詢?
w | head -n 1 | awk '{print $12}'
現在我想通過運行一個Perl腳本的查詢和打印輸出瀏覽器。我怎麼做?
我用下面的查詢在Linux上獲取服務器負載:如何在perl中實現linux查詢?
w | head -n 1 | awk '{print $12}'
現在我想通過運行一個Perl腳本的查詢和打印輸出瀏覽器。我怎麼做?
你可以簡單地使用反引號捕獲一個shell命令的輸出:
chomp(my $load = `w | head -n 1 | awk '{print \$12}'`);
的$
來轉義,否則Perl會嘗試發送命令之前進行插值的變量。
system()
是調用外部命令的首選方式,如果你不需要需要輸出。但是,如果您正在編寫的不僅僅是一個快速的實用程序腳本,通常最好將系統命令替換爲等效的Perl代碼。有很多可用的模塊可以複製常用shell命令和任務的功能。
反推作品! – 2013-02-27 11:23:04
要在perl中運行系統命令,請參考this。
以下產卵一個過程,而不是四個:
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個項目。所有這一切需要的是
my $load = (split ' ', `w`, 13)[11];
'系統( 「W |頭-n 1 | awk的 '{打印$ 12}'」)' – m0skit0 2013-02-27 11:12:59
我如何捕獲它的輸出? – 2013-02-27 11:19:51
你不需要'head',試試'w | awk'{print $ 12; exit}'' – Kent 2013-02-27 11:24:05