/usr/lib/perl5/Proc/Killfam.pm is in libproc-processtable-perl 0.45-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | $Proc::Killfam::VERSION = '1.0';
package Proc::Killfam;
use Exporter;
use base qw/Exporter/;
use subs qw/get_pids/;
use vars qw/@EXPORT @EXPORT_OK $ppt_OK/;
use strict;
@EXPORT = qw/killfam/;
@EXPORT_OK = qw/killfam/;
BEGIN {
$ppt_OK = 1;
eval "require Proc::ProcessTable";
if ($@) {
$ppt_OK = 0;
warn "Proc::ProcessTable missing, can't kill sub-children.";
}
}
sub killfam {
my($signal, @pids) = @_;
if ($ppt_OK) {
my $pt = Proc::ProcessTable->new;
my(@procs) = @{$pt->table};
my(@kids) = get_pids \@procs, @pids;
@pids = (@pids, @kids);
}
kill $signal, @pids;
} # end killfam
sub get_pids {
my($procs, @kids) = @_;
my @pids;
foreach my $kid (@kids) {
foreach my $proc (@$procs) {
if ($proc->ppid == $kid) {
my $pid = $proc->pid;
push @pids, $pid, get_pids $procs, $pid;
}
}
}
@pids;
} # end get_pids
1;
__END__
=head1 NAME
Proc::Killfam - kill a list of pids, and all their sub-children
=head1 SYNOPSIS
use Proc::Killfam;
killfam $signal, @pids;
=head1 DESCRIPTION
B<killfam> accepts the same arguments as the Perl builtin B<kill> command,
but, additionally, recursively searches the process table for children and
kills them as well.
=head1 EXAMPLE
B<killfam 'TERM', ($pid1, $pid2, @more_pids)>;
=head1 KEYWORDS
kill, signal
=cut
|