Module: Process

Defined in:
lib/killall.rb

Constant Summary collapse

DEFAULT_SIGNAL =
'term'.freeze

Class Method Summary collapse

Class Method Details

.killall(name, signal = DEFAULT_SIGNAL) ⇒ Object


5
6
7
8
9
10
11
# File 'lib/killall.rb', line 5

def self.killall(name, signal = DEFAULT_SIGNAL)
  begin
    killall!(name, signal)
  rescue Errno::ENOENT, Errno::EPERM => e
    # puts "Error: #{e.message}"
  end
end

.killall!(name, signal = DEFAULT_SIGNAL) ⇒ Object

Raises:

  • (Errno::ENOENT)

13
14
15
16
17
18
19
20
21
22
# File 'lib/killall.rb', line 13

def self.killall!(name, signal = DEFAULT_SIGNAL)
  pids = `ps -ef | grep -vE \"^USER|grep\" | grep '#{name}' | awk '{print $2}'`.chomp.split("\n")

  # puts "Found #{pids.count} processes matching '#{name}'"
  raise Errno::ENOENT if pids.empty?

  pids.each do |pid|
    Process.kill(signal, pid.to_i)
  end
end