linux – Perl进程解析

linux – Perl进程解析,第1张

概述我在perl的 linux机器上循环进程.我想显示特定进程的总cpu,但我想显示进程的每个实例的总用量.例如: USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDnorthriv 10228 0.0 0.2 23692 8084 ? S Sep18 0:00 /usr/l 我在perl的 linux机器上循环进程.我想显示特定进程的总cpu,但我想显示进程的每个实例的总用量.例如:

USER       PID %cpu %MEM    VSZ   RSS TTY      STAT START   TIME COMMANDnorthriv 10228  0.0  0.2  23692  8084 ?        S    Sep18   0:00 /usr/local/apache2/bin/httpd -k startnorthriv 10229  0.0  0.2  23692  8084 ?        S    Sep18   0:00 /usr/local/apache2/bin/httpd -k startnorthriv 10186  0.0  0.2  23692  8084 ?        S    Sep18   0:00 /usr/local/apache2/bin/httpd -k startnorthriv 10187  0.0  0.2  23692  8084 ?        S    Sep18   0:00 /usr/local/apache2/bin/httpd -k startspeaktra 25535  0.2  1.0  46788 33212 ?        S    Sep23   6:04 /usr/local/apache2/bin/httpd -k startspeaktra 25547  0.2  0.8  40320 26712 ?        S    Sep23   6:21 /usr/local/apache2/bin/httpd -k startwvneuroc  1570  0.2  0.0   2136  1044 ?        S    12:52   0:00 /usr/bin/qpopper -F -Sspeaktra 25546  0.2  0.7  35680 22116 ?        S    Sep23   6:45 /usr/local/apache2/bin/httpd -k startspeaktra 1570  0.2  0.0   2136  1044 ?        S    12:52   0:00 /usr/bin/qpopper -F -S

这样的东西将由用户和这样的过程输出.

northriv(0.0): /usr/local/apache2/bin/httpdspeacktra(0.6): /usr/local/apache2/bin/httpd(0.2): /usr/bin/qpopper -F -Swvneuroc(0.2): /usr/bin/qpopper -F -S

我知道我需要使用某种类型的哈希但不强大,这是我目前使用的代码.

!/usr/bin/perluse 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\+/,10];        next if $user eq 'USER';        $users{$user}{$cmd} += $cpu;        if($cpu > 10)        {                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进程解析所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/1026015.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-23
下一篇2022-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存