== < root 26144 c Tue Nov 2 03:10:02 2010 < oracle 26161 c Tue Nov 2 03:10:25 2010 < oracle 26193 c Tue Nov 2 03:10:30 2010 < sybase 26163 c Tue Nov 2 03:10:32 2010 > oracle 26161 c Tue Nov 2 03:10:33 2010 < sybase 26188 c Tue Nov 2 03:10:38 2010 > sybase 26163 c Tue Nov 2 03:10:58 2010 == #### #!/usr/bin/perl use strict; use warnings; use Date::Manip; my @owner= qw/oracle sybase/; open (FILE,"cron.log"); while() { chomp; next if (split /[ ]+/)[1] !~ /oracle|sybase/ ; my ($mode,$owner,$job_id,undef,undef,undef,undef,$timestamp,undef)=split /[ ]+/; #get same jobID finish timestamp and calculate difference, #then save back ${$owner}{$job_id}=DateCalc(${$owner}{$job_id},$timestamp) if ($mode=~ /^>/); } close(FILE); foreach $owner(@owner){ foreach (keys %{$owner}) { print "$owner - JobID:$_ - RunTime:${$owner}{$_}\n"; };}