I am working on collecting system usage data. I have the following perl script that works, except it only reports the last line of data only.
sub getPsefData {
open(PSEF_PIPE,"ps -ef |"
;
$i=0;
while (<PSEF_PIPE>) {
chomp;
@psefField = split(' ', $_, 8);
$pid[$i] = $psefField[1];
$uid{$pid[$i]} = $psefField[0];
$ppid{$pid[$i]} = $psefField[2];
($min,$sec) = split(/:/,$psefField[6]);
$time{$pid[$i]} = $min * 60 + $sec;
$args{$pid[$i]} = $psefField[7];
$i++;
}
close(PSEF_PIPE);
}
#------------------------- Main ---------------------------#
#------------------------------------------------------------#
# Step 1: Get the ps -ef data, and put it in the desired #
# arrays and hashes. #
#------------------------------------------------------------#
&getPsefData;
{
print "pid $psefField[1], uid $psefField[0], ppid $psefField[2],time $min $sec,args $p
sefField[7]\n";
}
sub getPsefData {
open(PSEF_PIPE,"ps -ef |"
$i=0;
while (<PSEF_PIPE>) {
chomp;
@psefField = split(' ', $_, 8);
$pid[$i] = $psefField[1];
$uid{$pid[$i]} = $psefField[0];
$ppid{$pid[$i]} = $psefField[2];
($min,$sec) = split(/:/,$psefField[6]);
$time{$pid[$i]} = $min * 60 + $sec;
$args{$pid[$i]} = $psefField[7];
$i++;
}
close(PSEF_PIPE);
}
#------------------------- Main ---------------------------#
#------------------------------------------------------------#
# Step 1: Get the ps -ef data, and put it in the desired #
# arrays and hashes. #
#------------------------------------------------------------#
&getPsefData;
{
print "pid $psefField[1], uid $psefField[0], ppid $psefField[2],time $min $sec,args $p
sefField[7]\n";
}