Module: Cognizant::Process::PID
- Included in:
- Cognizant::Process
- Defined in:
- lib/cognizant/process/pid.rb
Instance Method Summary collapse
- #cached_pid ⇒ Object
- #read_pid ⇒ Object
-
#unlink_pid ⇒ Object
Note: Expected that this method is not called to unlink pidfile if the process daemonizes itself (and hence manages the pidfile by itself).
-
#write_pid(pid = nil) ⇒ Object
Note: Expected that this method is not called to overwrite pidfile if the process daemonizes itself (and hence manages the pidfile by itself).
Instance Method Details
#cached_pid ⇒ Object
4 5 6 7 8 9 10 |
# File 'lib/cognizant/process/pid.rb', line 4 def cached_pid if not @process_pid or @process_pid == 0 read_pid else @process_pid end end |
#read_pid ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/cognizant/process/pid.rb', line 12 def read_pid if self.pid_command str = execute(self.pid_command).stdout.to_i process_pid = str unless not str or str.zero? # TODO: Write pid to pidfile, since our source was pid_command instead. elsif self.pidfile and File.exists?(self.pidfile) str = File.read(self.pidfile).to_i process_pid = str unless not str or str.zero? end process_pid = 0 unless Cognizant::System.pid_running?(process_pid) # If the newly fetched pid is not running, reset it. @process_pid = process_pid end |
#unlink_pid ⇒ Object
Note: Expected that this method is not called to unlink pidfile if the process daemonizes itself (and hence manages the pidfile by itself).
32 33 34 35 36 37 |
# File 'lib/cognizant/process/pid.rb', line 32 def unlink_pid File.unlink(self.pidfile) if self.pidfile rescue Errno::ENOENT # It got deleted before we could. Perhaps it was a process managed pidfile. true end |
#write_pid(pid = nil) ⇒ Object
Note: Expected that this method is not called to overwrite pidfile if the process daemonizes itself (and hence manages the pidfile by itself).
26 27 28 29 |
# File 'lib/cognizant/process/pid.rb', line 26 def write_pid(pid = nil) @process_pid = pid File.open(self.pidfile, "w") { |f| f.write(@process_pid) } if self.pidfile and @process_pid and @process_pid != 0 end |