exit $UNKNOWN;
}
+sub convert_time {
+ my $in = shift;
+ my ($ticks, $unit) = ($in =~ /^(\d+)([smhdw]?)$/);
+
+ if ($unit eq 's' || $unit eq '') { }
+ elsif ($unit eq 'm') { $ticks *= 60; }
+ elsif ($unit eq 'h') { $ticks *= 60*60; }
+ elsif ($unit eq 'd') { $ticks *= 60*60*24; }
+ elsif ($unit eq 'w') { $ticks *= 60*60*24*7; }
+ else { die "Invalid unit '$unit' in '$in'\n" }
+ return $ticks;
+}
+
+
if (!GetOptions (
'--help' => \$params->{'help'},
'--version' => \$params->{'version'},
'--quiet' => \$params->{'quiet'},
'--ignore-pid-namespaces' => \$params->{'ignore_pid_namespaces'},
'--verbose' => \$params->{'verbose'},
+ '--ignore-younger=s' => \$params->{'ignore_younger'},
'-v' => \$params->{'verbose'},
'--config=s' => \$params->{'config'},
)) {
dief("Config->ignorelist is not an array!\n");
}
-
my %processes;
sub getPIDs($$) {
close F;
return 0;
}
+sub getYoungProcesses() {
+ my $ignore_hash = {};
+ if (defined $params->{'ignore_younger'}) {
+ eval "use Proc::ProcessTable; 1" or die "We need Proc::ProcessTable to use --ignore-younger.\n";
+ my $min_age = convert_time($params->{'ignore_younger'});
+ my $cutoff = time() - $min_age;
+
+ my $process_table = new Proc::ProcessTable(enable_ttys => 0);
+ for my $p ( @{$process_table->table} ){
+ $ignore_hash->{$p->pid} = 1 if $p->start > $cutoff;
+ }
+ }
+ return $ignore_hash;
+}
+
+
+my $IGNORE_YOUNG_PROCESSES = getYoungProcesses();
+
+
+
my $INVSERVER = inVserver();
next LINE if $ignore;
}
next if ($INVSERVER && ($process eq 'init') && ($pid == 1) && ($user eq 'root'));
+ if (exists $IGNORE_YOUNG_PROCESSES->{$pid}) {
+ if ( $params->{'verbose'} ) {
+ print STDERR "ignoring young $process($pid) because of [$path]:\n";
+ print STDERR $line;
+ }
+ next LINE
+ }
if ( $params->{'verbose'} ) {
print STDERR "adding $process($pid) because of [$path]:\n";
print STDERR $line;