#!/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+/,); $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"; }