############################################################!/usr/bin/perl use warnings; use strict; use IPC::Open3; use Tk; my $pid = shift; my $pid1 = open3(0, \*READ,0,"top -d 1 -b -p $pid "); waitpid($pid1, 1); my $sizeold = 0; my $mw = new MainWindow; $mw->overrideredirect(1); my $t = $mw->Text(-width=>25, -height=>1, -bg=>'black',-fg=>'yellow')- +>pack; my $id = Tk::After->new($mw,50,'repeat',\&refresh); MainLoop; sub refresh{ my @words = split(/\s+/,<READ>); $words[0] ||= 0; if($words[0] =~ /$pid/){ $t->delete('1.0','end'); $t->insert('end',"PID: $pid -> $words[4]"); if($words[4] != $sizeold){print chr(07)} $sizeold = $words[4]; } }
#!/usr/bin/perl use warnings; use strict; use Tk; use Proc::ProcessTable; #Dosn't give same size as top ? my $sizeold = 0; my $pid = shift; my $t = new Proc::ProcessTable; my $p; foreach my $p1 (@{$t->table}){ if($p1->pid =~ /$pid/){ $p = $p1 } } my $mw = new MainWindow; $mw->overrideredirect(1); my $text = $mw->Text(-width=>25, -height=>1, -bg=>'black',-fg=>'yellow +')->pack; my $id = Tk::After->new($mw,50,'repeat',\&refresh); MainLoop; sub refresh{ $text->delete('1.0','end'); my $insert= 'PID: '.$p->pid.' -> '.$p->size; $text->insert('end',$insert); if($p->size != $sizeold){print chr(07)} $sizeold = $p->size; # print $p->pid," ",$p->cmndline," ",$p->size,"\n"; }
In reply to top size output not matching Proc::ProcessTable by zentara
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |