我在 linux 上使用以下查询来获取服务器负载:
w | head -n 1 | awk '{print $12}'
现在我想通过 perl 脚本运行查询并在浏览器中打印输出。我怎么做?
以下产生一个进程而不是四个:
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 项返回。您可以简单地使用反引号捕获 shell 命令的输出:
chomp( my $load = `w | head -n 1 | awk '{print \$12}'` );
$
必须转义,否则 Perl 将在发送命令之前尝试插入变量。
system()
如果您不需要输出,是调用外部命令的首选方式。
但是,如果您编写的不仅仅是快速实用程序脚本,通常最好用等效的 Perl 代码替换系统命令。有许多模块可以复制常见 shell 命令和任务的功能。
要在 perl 中运行系统命令,请参阅此。
所需要的只是
my $load = (split ' ', `w`, 13)[11];