我用下面的查询在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