首页 / PERL / linux – Perl进程解析
linux – Perl进程解析
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux – Perl进程解析,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2479字,纯文字阅读大概需要4分钟。
内容图文
我在perl的linux机器上循环进程.我想显示特定进程的总cpu,但我想显示进程的每个实例的总用量.例如:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
northriv 10228 0.0 0.2 23692 8084 ? S Sep18 0:00 /usr/local/apache2/bin/httpd -k start
northriv 10229 0.0 0.2 23692 8084 ? S Sep18 0:00 /usr/local/apache2/bin/httpd -k start
northriv 10186 0.0 0.2 23692 8084 ? S Sep18 0:00 /usr/local/apache2/bin/httpd -k start
northriv 10187 0.0 0.2 23692 8084 ? S Sep18 0:00 /usr/local/apache2/bin/httpd -k start
speaktra 25535 0.2 1.0 46788 33212 ? S Sep23 6:04 /usr/local/apache2/bin/httpd -k start
speaktra 25547 0.2 0.8 40320 26712 ? S Sep23 6:21 /usr/local/apache2/bin/httpd -k start
wvneuroc 1570 0.2 0.0 2136 1044 ? S 12:52 0:00 /usr/bin/qpopper -F -S
speaktra 25546 0.2 0.7 35680 22116 ? S Sep23 6:45 /usr/local/apache2/bin/httpd -k start
speaktra 1570 0.2 0.0 2136 1044 ? S 12:52 0:00 /usr/bin/qpopper -F -S
这样的东西将由用户和这样的过程输出.
northriv
(0.0): /usr/local/apache2/bin/httpd
speacktra
(0.6): /usr/local/apache2/bin/httpd
(0.2): /usr/bin/qpopper -F -S
wvneuroc
(0.2): /usr/bin/qpopper -F -S
我知道我需要使用某种类型的哈希但不强大,这是我目前使用的代码.
!/usr/bin/perl
use strict;
use warnings;
my @stats;
my $date=`date +"\%m-\%d-\%Y-\%r"`;
chomp $date;
my @process_table = `ps aux --sort=\%cpu|sed -e 's/\\s\\+/,/g'`;
for (@process_table)
{ chomp;
$_ =~ s/ / /g;
my ($user,$pid,$cpu,$mem,$cmd)=(split /,/,$_)[0,1,2,3,10];
next if $user eq 'USER';
if($cpu > 10)
{
push(@stats,"$user - WARNING(CPU:$cpu):\t$pid($cmd)\n");
}
if($cpu > 50)
{
push(@stats,"$user - CRITICAL(CPU:$cpu):\t$pid($cmd)\n");
}
}
print $_ for @stats;
解决方法:
我在您的代码中添加了%users hash-of-hashes.另见:perldoc perldsc
use warnings;
use strict;
my @stats;
my $date=`date +"\%m-\%d-\%Y-\%r"`;
chomp $date;
my %users;
my @process_table = `ps aux --sort=\%cpu|sed -e 's/\\s\\+/,/g'`;
for (@process_table)
{ chomp;
$_ =~ s/ / /g;
my ($user,$pid,$cpu,$mem,$cmd)=(split /,/,$_)[0,1,2,3,10];
next if $user eq 'USER';
$users{$user}{$cmd} += $cpu;
if($cpu > 10)
{
push(@stats,"$user - WARNING(CPU:$cpu):\t$pid($cmd)\n");
}
if($cpu > 50)
{
push(@stats,"$user - CRITICAL(CPU:$cpu):\t$pid($cmd)\n");
}
}
print $_ for @stats;
for my $user (sort keys %users) {
print "$user\n";
print "($users{$user}{$_}): $_\n" for (sort keys %{ $users{$user} });
print "\n";
}
内容总结
以上是互联网集市为您收集整理的linux – Perl进程解析全部内容,希望文章能够帮你解决linux – Perl进程解析所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。