Thin::Daemonizable::ClassMethods

Public Instance Methods

force_kill(pid_file) click to toggle source
     # File lib/thin/daemonizing.rb, line 137
137:       def force_kill(pid_file)
138:         if pid = read_pid_file(pid_file)
139:           Logging.log "Sending KILL signal to process #{pid} ... "
140:           Process.kill("KILL", pid)
141:           File.delete(pid_file) if File.exist?(pid_file)
142:         else
143:           Logging.log "Can't stop process, no PID found in #{pid_file}"
144:         end
145:       end
kill(pid_file, timeout=60) click to toggle source

Send a QUIT or INT (if timeout is 0) signal the process which PID is stored in pid_file. If the process is still running after timeout, KILL signal is sent.

     # File lib/thin/daemonizing.rb, line 103
103:       def kill(pid_file, timeout=60)
104:         if timeout == 0
105:           send_signal('INT', pid_file, timeout)
106:         else
107:           send_signal('QUIT', pid_file, timeout)
108:         end
109:       end
read_pid_file(file) click to toggle source
     # File lib/thin/daemonizing.rb, line 147
147:       def read_pid_file(file)
148:         if File.file?(file) && pid = File.read(file)
149:           pid.to_i
150:         else
151:           nil
152:         end
153:       end
restart(pid_file) click to toggle source

Restart the server by sending HUP signal.

     # File lib/thin/daemonizing.rb, line 112
112:       def restart(pid_file)
113:         send_signal('HUP', pid_file)
114:       end
send_signal(signal, pid_file, timeout=60) click to toggle source

Send a signal to the process which PID is stored in pid_file.

     # File lib/thin/daemonizing.rb, line 117
117:       def send_signal(signal, pid_file, timeout=60)
118:         if pid = read_pid_file(pid_file)
119:           Logging.log "Sending #{signal} signal to process #{pid} ... "
120:           Process.kill(signal, pid)
121:           Timeout.timeout(timeout) do
122:             sleep 0.1 while Process.running?(pid)
123:           end
124:         else
125:           Logging.log "Can't stop process, no PID found in #{pid_file}"
126:         end
127:       rescue Timeout::Error
128:         Logging.log "Timeout!"
129:         force_kill pid_file
130:       rescue Interrupt
131:         force_kill pid_file
132:       rescue Errno::ESRCH # No such process
133:         Logging.log "process not found!"
134:         force_kill pid_file
135:       end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.