Killing processes contain pattern

by GarciaPL on Saturday 10 August 2013

I would like to share, in my opinion, quite helpful tool dedicated for Linux administrators for ending (or some of you would say "killing") processes which contain particular pattern. I prepared a dedicated script written in Perl which is very easy to help. If you would like to kill all processes contain word "chrome" just run like this one : ./KillProcesses.pl -p chrome. I also wrote a small program with infinity loop which can be used for testing purposes. It can be found using pattern LoopProcess.

KillProcesses.pl

#!/usr/bin/perl -w

use strict;
use warnings;
use Getopt::Long;
use Data::Dumper;

my $help;
my $process_pattern = undef;

sub kill_processes {
 if (defined($process_pattern)) {
  my @processeslist = `ps -ef | grep $process_pattern | grep -v grep | awk '{print \$2}'`;

  if ((@processeslist) and (scalar(@processeslist) > 1)) {
   print "\nKilling processes with PID like : \n";
   print @processeslist;
   my @killprocess = `kill -9 @processeslist`;
   print Dumper @killprocess;
  } else {
   print "\nCan not find processes contain a pattern '$process_pattern'\n";
  }
 } else {
  print "\nProcess name was not defined\n";
 }
}

sub usage {
    print "$0 -p \n";
}

sub help {
   print "\nKill All Processes along with pattern\n";
   usage();
   print < \$help,
  'p=s'  => \$process_pattern,   'pattern=s' => \$process_pattern
    );

if ($help) { help(); exit; }
if (!defined($process_pattern))
    { print "Put pattern of process! (-h for help)\n"; usage(); exit;}
}

######### MAIN PROGRAM

check_input();

######## KILL PROCESSES ALONG WITH PATTERN
print "\nSearching and ending processes contain a pattern '$process_pattern'";
kill_processes();


LoopProcess.pl

#!/usr/bin/perl -w

use strict;
use warnings;

while (1) {

}


Reference :  [1] GarciaPL Pastebin KillProcesses [2] GarciaPL Pastebin LoopProcess