lots more misc work
git-svn-id: svn://127.0.0.1/Perl/Proc-ProcessTable-Colorizer/trunk@962 0c1c3402-1be1-de11-8092-0022686faf23
This commit is contained in:
parent
58a62ae2b0
commit
31314e37e8
|
@ -72,10 +72,9 @@ sub new {
|
|||
'uid',
|
||||
'pctcpu',
|
||||
'pctmem',
|
||||
'vmsize',
|
||||
'size',
|
||||
'rss',
|
||||
'state',
|
||||
'wchan',
|
||||
'info',
|
||||
'nice',
|
||||
'start',
|
||||
'time',
|
||||
|
@ -120,12 +119,10 @@ sub colorize{
|
|||
$field=$field.'CPU%';
|
||||
}elsif( $fields->[$fieldInt] eq 'pctmem' ){
|
||||
$field=$field.'Mem%';
|
||||
}elsif( $fields->[$fieldInt] eq 'vmsize' ){
|
||||
}elsif( $fields->[$fieldInt] eq 'size' ){
|
||||
$field=$field.'VM Size';
|
||||
}elsif( $fields->[$fieldInt] eq 'rss' ){
|
||||
$field=$field.'RSS';
|
||||
}elsif( $fields->[$fieldInt] eq 'wchan' ){
|
||||
$field=$field.'WChan';
|
||||
}elsif( $fields->[$fieldInt] eq 'proc' ){
|
||||
$field=$field.'Command';
|
||||
}else{
|
||||
|
@ -175,18 +172,24 @@ sub colorize{
|
|||
$values{pctmem}=($rss / $physmem)*100;
|
||||
}elsif(
|
||||
($^O =~ /bsd/) &&
|
||||
( $field =~ /vmsize/ )
|
||||
( $field =~ /size/ )
|
||||
){
|
||||
|
||||
my $bproc=BSD::Process::info( $proc->pid );
|
||||
$values{vmsize}=$bproc->{size};
|
||||
$values{size}=$bproc->{size};
|
||||
}elsif(
|
||||
$field =~ /proc/
|
||||
$field eq 'proc'
|
||||
){
|
||||
my $fname=$proc->fname;
|
||||
my $cmndline=$proc->cmndline;
|
||||
|
||||
#save it for possible future use
|
||||
$values{fname}=$fname;
|
||||
$values{cmndline}=$cmndline;
|
||||
|
||||
#set the proc value
|
||||
if ( $cmndline =~ /^$/ ){
|
||||
#kernel proc
|
||||
$values{'proc'}='['.$fname.']';
|
||||
if ( $fname eq 'idle' ){
|
||||
$values{'idle'}=1;
|
||||
|
@ -194,7 +197,28 @@ sub colorize{
|
|||
}else{
|
||||
$values{'proc'}=$fname;
|
||||
}
|
||||
|
||||
}elsif(
|
||||
$field eq 'info'
|
||||
){
|
||||
$values{wchan}=$proc->wchan;
|
||||
$values{state}=$proc->state;
|
||||
|
||||
if ($^O =~ /bsd/){
|
||||
my $bproc=BSD::Process::info( $proc->pid );
|
||||
$values{controlling_tty_active}=$bproc->{isctty};
|
||||
$values{is_session_leader}=$bproc->{issleader};
|
||||
$values{is_being_forked}=$bproc->{stat_1};
|
||||
$values{working_on_exiting}=$bproc->{wexit};
|
||||
$values{has_controlling_terminal}=$bproc->{controlt};
|
||||
$values{is_locked}=$bproc->{locked};
|
||||
$values{traced_by_debugger}=$bproc->{traced};
|
||||
$values{is_stopped}=$bproc->{stat_4};
|
||||
$values{posix_advisory_lock}=$bproc->{advlock};
|
||||
|
||||
use Data::Dumper;
|
||||
print Dumper( $bproc );
|
||||
}
|
||||
|
||||
}else{
|
||||
$values{$field}=$proc->$field;
|
||||
}
|
||||
|
@ -210,8 +234,8 @@ sub colorize{
|
|||
$values{pctcpu} = 0;
|
||||
}
|
||||
|
||||
if ( ! defined( $values{vmsize} ) ){
|
||||
$values{vmsize} = 0;
|
||||
if ( ! defined( $values{size} ) ){
|
||||
$values{size} = 0;
|
||||
}
|
||||
|
||||
$values{pctcpu}=$values{pctcpu}/20;
|
||||
|
@ -220,7 +244,7 @@ sub colorize{
|
|||
$values{pctcpu}=sprintf('%.1f', $values{pctcpu});
|
||||
|
||||
$values{rss}=$values{rss}/1024;
|
||||
$values{vmsize}=$values{vmsize}/1024;
|
||||
$values{size}=$values{size}/1024;
|
||||
|
||||
push( @procs, \%values );
|
||||
|
||||
|
@ -229,10 +253,13 @@ sub colorize{
|
|||
#sort by CPU percent and then RAM
|
||||
@procs=sort {
|
||||
$a->{pctcpu} <=> $b->{pctcpu} or
|
||||
$a->{pctmem} <=> $b->{pctmem}
|
||||
$a->{pctmem} <=> $b->{pctmem} or
|
||||
$a->{rss} <=> $b->{rss} or
|
||||
$a->{size} <=> $b->{size} or
|
||||
$a->{time} <=> $b->{time}
|
||||
} @procs;
|
||||
@procs=reverse(@procs);
|
||||
|
||||
|
||||
foreach my $proc (@procs){
|
||||
my @line;
|
||||
$self->nextColorReset;
|
||||
|
@ -253,7 +280,10 @@ sub colorize{
|
|||
){
|
||||
|
||||
foreach my $field ( @{$fields} ){
|
||||
my $item=$proc->{$field};
|
||||
my $item='';
|
||||
if ( defined( $proc->{$field} ) ){
|
||||
$item=$proc->{$field};
|
||||
}
|
||||
|
||||
if ( $field eq 'start' ){
|
||||
$item=$self->startString($item);
|
||||
|
@ -271,6 +301,84 @@ sub colorize{
|
|||
$item=$self->timeString($item);
|
||||
}elsif( $field eq 'proc' ){
|
||||
$item=color($self->processColorGet).$item;
|
||||
}elsif( $field eq 'info'){
|
||||
my $left=$proc->{state};
|
||||
if (
|
||||
$left eq 'sleep'
|
||||
){
|
||||
$left='S';
|
||||
}elsif(
|
||||
$left eq 'zombie'
|
||||
){
|
||||
$left='Z';
|
||||
}elsif(
|
||||
$left eq 'wait'
|
||||
){
|
||||
$left='W';
|
||||
}elsif(
|
||||
$left eq 'run'
|
||||
){
|
||||
$left='R';
|
||||
}
|
||||
|
||||
#checks if it is swapped out
|
||||
if (
|
||||
( $proc->{state} ne 'zombie' ) &&
|
||||
( $proc->{rss} == '0' )
|
||||
){
|
||||
$left=$left.'O';
|
||||
}
|
||||
|
||||
#waiting to exit
|
||||
if (
|
||||
( defined( $proc->{working_on_exiting} ) ) &&
|
||||
$proc->{working_on_exiting}
|
||||
){
|
||||
$left=$left.'E';
|
||||
}
|
||||
|
||||
#session leader
|
||||
if (
|
||||
( defined( $proc->{is_session_leader} ) ) &&
|
||||
$proc->{is_session_leader}
|
||||
){
|
||||
$left=$left.'s';
|
||||
}
|
||||
|
||||
#checks to see if any sort of locks are present
|
||||
if (
|
||||
( defined( $proc->{is_locked} ) || defined( $proc->{posix_advisory_lock} ) )&&
|
||||
( $proc->{is_locked} || $proc->{posix_advisory_lock} )
|
||||
){
|
||||
$left=$left.'L';
|
||||
}
|
||||
|
||||
#checks to see if has a controlling terminal
|
||||
if (
|
||||
( defined( $proc->{has_controlling_terminal} ) ) &&
|
||||
$proc->{has_controlling_terminal}
|
||||
){
|
||||
$left=$left.'+';
|
||||
}
|
||||
|
||||
#if it is being forked
|
||||
if (
|
||||
( defined( $proc->{is_being_forked} ) ) &&
|
||||
$proc->{is_being_forked}
|
||||
){
|
||||
$left=$left.'F';
|
||||
}
|
||||
|
||||
#checks if it knows it is being traced
|
||||
if (
|
||||
( defined( $proc->{traced_by_debugger} ) ) &&
|
||||
$proc->{traced_by_debugger}
|
||||
){
|
||||
$left=$left.'X';
|
||||
}
|
||||
|
||||
$item=color($self->nextColor).$left.' '.color($self->nextColor).$proc->{wchan};
|
||||
|
||||
}else{
|
||||
$item=color($self->nextColor).$item;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue