Proc-ProcessTable-piddler
view release on metacpan or search on metacpan
lib/Proc/ProcessTable/piddler.pm view on Meta::CPAN
foreach my $proc_key ( @proc_keys ){
$proc_keys_hash{$proc_key}=1;
}
# remove the ones we actually use
delete( $proc_keys_hash{pctcpu} );
delete( $proc_keys_hash{uid} );
delete( $proc_keys_hash{pid} );
delete( $proc_keys_hash{gid} );
delete( $proc_keys_hash{vmsize} );
delete( $proc_keys_hash{rss} );
delete( $proc_keys_hash{state} );
delete( $proc_keys_hash{wchan} );
delete( $proc_keys_hash{cmndline} );
delete( $proc_keys_hash{size} );
delete( $proc_keys_hash{time} );
if( defined( $proc_keys_hash{pctmem} ) ){
delete( $proc_keys_hash{pctmem} );
}
if( defined( $proc_keys_hash{groups} ) ){
delete( $proc_keys_hash{groups} );
}
if ( defined( $proc_keys_hash{cmdline} ) ){
delete( $proc_keys_hash{cmdline} );
}
@proc_keys=sort(keys( %proc_keys_hash ));
my @procs;
foreach my $proc ( @{ $pt } ){
if ( defined( $pids_hash{ $proc->pid } ) ){
push( @procs, $proc );
}
}
if (!defined( $procs[0] )){
return ''
}
my $toReturn='';
my $first=1;
foreach my $proc ( @procs ){
my $tb = Text::ANSITable->new;
$tb->border_style('Default::none_ascii');
$tb->color_theme('Default::no_color');
$tb->show_header(0);
$tb->set_column_style(0, pad => 0);
$tb->set_column_style(1, pad => 1);
$tb->columns( ['var','val'] );
#
# PID
#
my @data;
push( @data, [
color( $self->{varColor} ).'PID'.color('reset'),
color( $self->{pidColor} ).$proc->pid.color('reset')
]);
#
# UID
#
my $user=getpwuid($proc->{uid});
if ( ! defined( $user ) ) {
$user=color( $self->{idColors}[0] ).$proc->{uid}.color('reset');
}else{
$user=color( $self->{idColors}[0] ).$user.
color( $self->{idColors}[1] ).'('.
color( $self->{idColors}[2] ).$proc->{uid}.
color( $self->{idColors}[1] ).')'
.color('reset');
}
push( @data, [
color( $self->{varColor} ).'UID'.color('reset'),
$user.' '.color('reset')
]);
#
# GID
#
my $group=getgrgid($proc->{gid});
if ( ! defined( $group ) ) {
$group=color( $self->{idColors}[0] ).$proc->{gid}.color('reset');
}else{
$group=color( $self->{idColors}[0] ).$group.
color( $self->{idColors}[1] ).'('.
color( $self->{idColors}[2] ).$proc->{gid}.
color( $self->{idColors}[1] ).')'
.color('reset');
}
push( @data, [
color( $self->{varColor} ).'GID'.color('reset'),
$group.' '.color('reset')
]);
#
# Groups
#
if ( defined( $proc->{groups} ) ){
my @groups;
foreach my $current_group ( @{ $proc->{groups} } ){
$group=getgrgid( $current_group );
if ( ! defined( $group ) ) {
$group=color( $self->{idColors}[0] ).$current_group.color('reset');
}else{
$group=color( $self->{idColors}[0] ).$group.
color( $self->{idColors}[1] ).'('.
color( $self->{idColors}[2] ).$current_group.
color( $self->{idColors}[1] ).')'
.color('reset');
}
push( @groups, $group );
}
push( @data, [
color( $self->{varColor} ).'Groups'.color('reset'),
join( ' ', @groups )
]);
}
#
( run in 1.177 second using v1.01-cache-2.11-cpan-d7f47b0818f )