Someone on a maillist needed something that would
display the cpu-usage of just 1 or a few pids in a small
xterm. He didn't want to look at top, just 1 line of info.
If you know how to make this better, let me know.
#!/usr/bin/perl + use warnings; + use strict; + use Proc::ProcessTable; + #usage: cpusage pid1 pid2 pid3..... + #run without args to get full list + #then run with chosen pids and it will update + #every 5 secs. No output with invalid pids. + my @pids=undef; + my $t = new Proc::ProcessTable; + @pids = @ARGV; #get pids to watch on commandline + + if (@pids){ + while(1){ + foreach my $p (@{$t->table}) { + if(grep {$p->pid == $_}@pids){ + print "--------------------------------\n"; + print 'pid ',$p->pid,' ',$p->cmndline,' ','CPU% ',$p->{pctcpu},"\n +"; } + } + sleep(5); + } + }else{ + foreach my $p (@{$t->table}) { + print "--------------------------------\n"; + print 'pid ',$p->pid,' ',$p->cmndline,' ','CPU% ',$p->{pctcpu},"\n"; + } + } + exit(0);