#!/usr/bin/perl use strict; my ($ps, $max, $start, @t); $ps = `ps aux | grep perl`; $max = 5; # min $start = time; @t = localtime($start); foreach (split (/\n/, $ps)) { my @d = split (/\s+/, $_, 11); my $flag = 0; # Start Time if ($d[8] =~ /^(\d+):(\d+)$/) { my $e = &mktime($t[5], $t[4], $t[3], $1, $2, 0, -9); if ($start - $e >= $max * 60) { $flag = 1; } } elsif ($t[2] * 60 + $t[1] >= $max) { $flag = 1; } # Ps Time if ($d[9] =~ /^(?:(\d+):)?(\d+):\d+$/) { if ($1 * 60 + $2 >= $max) { $flag = 1; } } # Do if ($flag) { print "USER: $d[0]\nPID: $d[1]\nSTART: $d[8]\nTIME: $d[9]\nCOMMAND: $d[10]\n\n"; # system ("kill $d[1]"); } } sub mktime { my ($year, $mon, $mday, $hour, $min, $sec, $tz) = @_; my (@mdays, $xtime, $uru); @mdays = ( 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334); $uru = int(($year - 72) / 4); if (((($year + 1900) % 4) == 0) && ($mon < 2)) { $uru--; } $xtime = $year - 70; $xtime = ($xtime * 365) + $mdays[$mon] + $mday + $uru; $xtime = ($xtime * 24) + $hour + $tz; $xtime = ($xtime * 60) + $min; $xtime = ($xtime * 60) + $sec; return $xtime; }