Class: Sapristi::Linux::ProcessManager

Inherits:
Object
  • Object
show all
Defined in:
lib/sapristi/adapters/linux/process_manager.rb

Class Method Summary collapse

Class Method Details

.cmd_for_pid(pid) ⇒ Object

Raises:



27
28
29
30
31
32
33
# File 'lib/sapristi/adapters/linux/process_manager.rb', line 27

def self.cmd_for_pid(pid)
  cmd = "ps -o cmd -p #{pid}"
  line = `#{cmd}`.split("\n")[1]
  raise Error, "No process found pid=#{pid}" unless line

  line
end

.execute_and_detach(cmd) ⇒ Object



6
7
8
9
10
11
12
13
14
# File 'lib/sapristi/adapters/linux/process_manager.rb', line 6

def self.execute_and_detach(cmd)
  process_pid = begin
    Process.spawn(cmd)
  rescue StandardError
    raise Error, "Error executing process: #{$ERROR_INFO}"
  end
  ::Sapristi.logger.info "Launch #{cmd.split[0]}, process=#{process_pid}"
  Process.detach process_pid
end

.kill(waiter) ⇒ Object

Raises:



16
17
18
19
20
# File 'lib/sapristi/adapters/linux/process_manager.rb', line 16

def self.kill(waiter)
  Process.kill 'KILL', waiter.pid
  # sleep 1 # XLIB error for op code
  raise Error, 'Error executing process, it didn\'t open a window'
end

.user_pidsObject



22
23
24
25
# File 'lib/sapristi/adapters/linux/process_manager.rb', line 22

def self.user_pids
  user_id = `id -u`.strip
  `ps -u #{user_id}`.split("\n")[1..nil].map(&:to_i)
end