Class: Sapristi::Linux::ProcessManager
- Inherits:
-
Object
- Object
- Sapristi::Linux::ProcessManager
- Defined in:
- lib/sapristi/adapters/linux/process_manager.rb
Class Method Summary collapse
- .cmd_for_pid(pid) ⇒ Object
- .execute_and_detach(cmd) ⇒ Object
- .kill(waiter) ⇒ Object
- .user_pids ⇒ Object
Class Method Details
.cmd_for_pid(pid) ⇒ Object
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
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_pids ⇒ Object
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 |