pidify 0.1.2-i686-linux → 0.2-i686-linux

Sign up to get free protection for your applications and to get access to all the features.
@@ -94,14 +94,11 @@ A more useful example:
94
94
  </p>
95
95
  <pre>
96
96
  require 'pidify'
97
- require 'daemons'
98
97
  Signal.trap('INT') { Pidify.stop; exit }
99
98
  module Doer
100
99
  def self.start
101
100
  puts &quot;starting&quot;
102
- raise &quot;Failed to start: already running (PID file exists).&quot; if Pidify.running?
103
- Daemons.daemonize
104
- Pidify.start
101
+ Pidify.start_as_daemon
105
102
  loop do
106
103
  puts &quot;hello world&quot;
107
104
  sleep 1
@@ -126,15 +123,19 @@ A more useful example:
126
123
  <h3 class="section-bar">Methods</h3>
127
124
 
128
125
  <div class="name-list">
129
- <a href="#M000007">delete_pid</a>&nbsp;&nbsp;
130
- <a href="#M000005">pid</a>&nbsp;&nbsp;
126
+ <a href="#M000013">daemonize</a>&nbsp;&nbsp;
127
+ <a href="#M000008">delete_pid</a>&nbsp;&nbsp;
128
+ <a href="#M000006">pid</a>&nbsp;&nbsp;
131
129
  <a href="#M000001">pid_directory</a>&nbsp;&nbsp;
132
130
  <a href="#M000002">pid_directory=</a>&nbsp;&nbsp;
131
+ <a href="#M000011">pid_end</a>&nbsp;&nbsp;
132
+ <a href="#M000004">pid_exists?</a>&nbsp;&nbsp;
133
133
  <a href="#M000003">pid_file</a>&nbsp;&nbsp;
134
- <a href="#M000004">running?</a>&nbsp;&nbsp;
135
- <a href="#M000006">save_pid</a>&nbsp;&nbsp;
136
- <a href="#M000008">start</a>&nbsp;&nbsp;
137
- <a href="#M000009">stop</a>&nbsp;&nbsp;
134
+ <a href="#M000005">running?</a>&nbsp;&nbsp;
135
+ <a href="#M000007">save_pid</a>&nbsp;&nbsp;
136
+ <a href="#M000009">start</a>&nbsp;&nbsp;
137
+ <a href="#M000012">start_as_daemon</a>&nbsp;&nbsp;
138
+ <a href="#M000010">stop</a>&nbsp;&nbsp;
138
139
  </div>
139
140
  </div>
140
141
 
@@ -156,32 +157,56 @@ A more useful example:
156
157
  <div id="methods">
157
158
  <h3 class="section-bar">Public Class methods</h3>
158
159
 
159
- <div id="method-M000007" class="method-detail">
160
- <a name="M000007"></a>
160
+ <div id="method-M000013" class="method-detail">
161
+ <a name="M000013"></a>
161
162
 
162
163
  <div class="method-heading">
163
- <a href="Pidify.src/M000007.html" target="Code" class="method-signature"
164
- onclick="popupCode('Pidify.src/M000007.html');return false;">
164
+ <a href="Pidify.src/M000013.html" target="Code" class="method-signature"
165
+ onclick="popupCode('Pidify.src/M000013.html');return false;">
166
+ <span class="method-name">daemonize</span><span class="method-args">()</span>
167
+ </a>
168
+ </div>
169
+
170
+ <div class="method-description">
171
+ <p>
172
+ Daemonizes this process. Does not automatically use a PID file. If you want
173
+ to use a PID file, you must call <a
174
+ href="Pidify.html#M000009">Pidify.start</a> after the call to <a
175
+ href="Pidify.html#M000013">daemonize</a> or use <a
176
+ href="Pidify.html#M000012">Pidify.start_as_daemon</a>.
177
+ </p>
178
+ </div>
179
+ </div>
180
+
181
+ <div id="method-M000008" class="method-detail">
182
+ <a name="M000008"></a>
183
+
184
+ <div class="method-heading">
185
+ <a href="Pidify.src/M000008.html" target="Code" class="method-signature"
186
+ onclick="popupCode('Pidify.src/M000008.html');return false;">
165
187
  <span class="method-name">delete_pid</span><span class="method-args">()</span>
166
188
  </a>
167
189
  </div>
168
190
 
169
191
  <div class="method-description">
170
192
  <p>
171
- Deletes the PID file. Calling stop calls this automatically, but will also
172
- try to send a kill signal to the running process, if it is different from
173
- this one. BEWARE that this tries to delete whatever file is returned by <a
174
- href="Pidify.html#M000003">pid_file</a> and does no error checking on it!
193
+ Deletes the PID file. Calling <a href="Pidify.html#M000010">stop</a> calls
194
+ this automatically, but will also try to send a kill signal to the running
195
+ process, if it is different from this one. BEWARE that this tries to delete
196
+ whatever file is returned by <a href="Pidify.html#M000003">pid_file</a> and
197
+ does no error checking on it! Returns true if the delete was successful,
198
+ false if there was an error, and nil if the <a
199
+ href="Pidify.html#M000006">pid</a> file doesn&#8216;t exist.
175
200
  </p>
176
201
  </div>
177
202
  </div>
178
203
 
179
- <div id="method-M000005" class="method-detail">
180
- <a name="M000005"></a>
204
+ <div id="method-M000006" class="method-detail">
205
+ <a name="M000006"></a>
181
206
 
182
207
  <div class="method-heading">
183
- <a href="Pidify.src/M000005.html" target="Code" class="method-signature"
184
- onclick="popupCode('Pidify.src/M000005.html');return false;">
208
+ <a href="Pidify.src/M000006.html" target="Code" class="method-signature"
209
+ onclick="popupCode('Pidify.src/M000006.html');return false;">
185
210
  <span class="method-name">pid</span><span class="method-args">()</span>
186
211
  </a>
187
212
  </div>
@@ -189,7 +214,8 @@ href="Pidify.html#M000003">pid_file</a> and does no error checking on it!
189
214
  <div class="method-description">
190
215
  <p>
191
216
  Returns the PID stored in the <a href="Pidify.html#M000003">pid_file</a>
192
- (not necessarily the PID of this script).
217
+ (not necessarily the PID of this script). Returns nil if no PID exists or
218
+ if there is a problem with the read.
193
219
  </p>
194
220
  </div>
195
221
  </div>
@@ -224,15 +250,53 @@ Returns the Pathname of the PID storage directory (defaults to /var/run).
224
250
  <div class="method-description">
225
251
  <p>
226
252
  Sets the PID storage directory (defaults to /var/run). Be VERY CAREFUL
227
- using this, as <a href="Pidify.html#M000007">delete_pid</a> will try to
253
+ using this, as <a href="Pidify.html#M000008">delete_pid</a> will try to
228
254
  delete whatever file it thinks is the <a
229
255
  href="Pidify.html#M000003">pid_file</a> for this script in the <a
230
- href="Pidify.html#M000001">pid_directory</a>. It&#8217;s probably a good
256
+ href="Pidify.html#M000001">pid_directory</a>. It&#8216;s probably a good
231
257
  idea not to change this at all.
232
258
  </p>
233
259
  </div>
234
260
  </div>
235
261
 
262
+ <div id="method-M000011" class="method-detail">
263
+ <a name="M000011"></a>
264
+
265
+ <div class="method-heading">
266
+ <a href="Pidify.src/M000011.html" target="Code" class="method-signature"
267
+ onclick="popupCode('Pidify.src/M000011.html');return false;">
268
+ <span class="method-name">pid_end</span><span class="method-args">(signals=%w(SIGTERM SIGQUIT SIGKILL), secs_between_signal=4)</span>
269
+ </a>
270
+ </div>
271
+
272
+ <div class="method-description">
273
+ <p>
274
+ Sends each kill signal to the saved PID, pausing for secs_between_signal
275
+ after each to check if it the process remains running. Stops when the
276
+ process has ended or when all signals have been tried. Returns true if the
277
+ process was killed or false otherwise.
278
+ </p>
279
+ </div>
280
+ </div>
281
+
282
+ <div id="method-M000004" class="method-detail">
283
+ <a name="M000004"></a>
284
+
285
+ <div class="method-heading">
286
+ <a href="Pidify.src/M000004.html" target="Code" class="method-signature"
287
+ onclick="popupCode('Pidify.src/M000004.html');return false;">
288
+ <span class="method-name">pid_exists?</span><span class="method-args">()</span>
289
+ </a>
290
+ </div>
291
+
292
+ <div class="method-description">
293
+ <p>
294
+ Returns true if the <a href="Pidify.html#M000003">pid_file</a> exists for
295
+ this script.
296
+ </p>
297
+ </div>
298
+ </div>
299
+
236
300
  <div id="method-M000003" class="method-detail">
237
301
  <a name="M000003"></a>
238
302
 
@@ -250,29 +314,30 @@ Returns the PID filename as a Pathname.
250
314
  </div>
251
315
  </div>
252
316
 
253
- <div id="method-M000004" class="method-detail">
254
- <a name="M000004"></a>
317
+ <div id="method-M000005" class="method-detail">
318
+ <a name="M000005"></a>
255
319
 
256
320
  <div class="method-heading">
257
- <a href="Pidify.src/M000004.html" target="Code" class="method-signature"
258
- onclick="popupCode('Pidify.src/M000004.html');return false;">
321
+ <a href="Pidify.src/M000005.html" target="Code" class="method-signature"
322
+ onclick="popupCode('Pidify.src/M000005.html');return false;">
259
323
  <span class="method-name">running?</span><span class="method-args">()</span>
260
324
  </a>
261
325
  </div>
262
326
 
263
327
  <div class="method-description">
264
328
  <p>
265
- Returns true if the PID file exists for this script.
329
+ Returns true if the process using <a href="Pidify.html#M000006">pid</a> is
330
+ running.
266
331
  </p>
267
332
  </div>
268
333
  </div>
269
334
 
270
- <div id="method-M000006" class="method-detail">
271
- <a name="M000006"></a>
335
+ <div id="method-M000007" class="method-detail">
336
+ <a name="M000007"></a>
272
337
 
273
338
  <div class="method-heading">
274
- <a href="Pidify.src/M000006.html" target="Code" class="method-signature"
275
- onclick="popupCode('Pidify.src/M000006.html');return false;">
339
+ <a href="Pidify.src/M000007.html" target="Code" class="method-signature"
340
+ onclick="popupCode('Pidify.src/M000007.html');return false;">
276
341
  <span class="method-name">save_pid</span><span class="method-args">()</span>
277
342
  </a>
278
343
  </div>
@@ -280,17 +345,20 @@ Returns true if the PID file exists for this script.
280
345
  <div class="method-description">
281
346
  <p>
282
347
  Saves the PID of this script into the <a
283
- href="Pidify.html#M000003">pid_file</a>. Automatically called by start.
348
+ href="Pidify.html#M000003">pid_file</a>. Automatically called by <a
349
+ href="Pidify.html#M000009">start</a>. Returns nil if the <a
350
+ href="Pidify.html#M000006">pid</a> file already exists. Returns true if
351
+ successful, false if there was a write problem.
284
352
  </p>
285
353
  </div>
286
354
  </div>
287
355
 
288
- <div id="method-M000008" class="method-detail">
289
- <a name="M000008"></a>
356
+ <div id="method-M000009" class="method-detail">
357
+ <a name="M000009"></a>
290
358
 
291
359
  <div class="method-heading">
292
- <a href="Pidify.src/M000008.html" target="Code" class="method-signature"
293
- onclick="popupCode('Pidify.src/M000008.html');return false;">
360
+ <a href="Pidify.src/M000009.html" target="Code" class="method-signature"
361
+ onclick="popupCode('Pidify.src/M000009.html');return false;">
294
362
  <span class="method-name">start</span><span class="method-args">()</span>
295
363
  </a>
296
364
  </div>
@@ -299,26 +367,48 @@ href="Pidify.html#M000003">pid_file</a>. Automatically called by start.
299
367
  <p>
300
368
  Saves the PID of this script into the <a
301
369
  href="Pidify.html#M000003">pid_file</a> by calling <a
302
- href="Pidify.html#M000006">save_pid</a>. Raises an exception if running?
303
- returns false.
370
+ href="Pidify.html#M000007">save_pid</a>. Raises an exception if <a
371
+ href="Pidify.html#M000004">pid_exists?</a> returns false. Returns true if
372
+ successful.
304
373
  </p>
305
374
  </div>
306
375
  </div>
307
376
 
308
- <div id="method-M000009" class="method-detail">
309
- <a name="M000009"></a>
377
+ <div id="method-M000012" class="method-detail">
378
+ <a name="M000012"></a>
310
379
 
311
380
  <div class="method-heading">
312
- <a href="Pidify.src/M000009.html" target="Code" class="method-signature"
313
- onclick="popupCode('Pidify.src/M000009.html');return false;">
314
- <span class="method-name">stop</span><span class="method-args">(signal='SIGINT')</span>
381
+ <a href="Pidify.src/M000012.html" target="Code" class="method-signature"
382
+ onclick="popupCode('Pidify.src/M000012.html');return false;">
383
+ <span class="method-name">start_as_daemon</span><span class="method-args">()</span>
384
+ </a>
385
+ </div>
386
+
387
+ <div class="method-description">
388
+ <p>
389
+ Like <a href="Pidify.html#M000009">Pidify.start</a>, but first calls <a
390
+ href="Pidify.html#M000013">Pidify.daemonize</a>. Will fail and raise an
391
+ exception if Pidify.running? returns true.
392
+ </p>
393
+ </div>
394
+ </div>
395
+
396
+ <div id="method-M000010" class="method-detail">
397
+ <a name="M000010"></a>
398
+
399
+ <div class="method-heading">
400
+ <a href="Pidify.src/M000010.html" target="Code" class="method-signature"
401
+ onclick="popupCode('Pidify.src/M000010.html');return false;">
402
+ <span class="method-name">stop</span><span class="method-args">(signals=%w(SIGTERM SIGQUIT SIGKILL), secs_between_signal=4)</span>
315
403
  </a>
316
404
  </div>
317
405
 
318
406
  <div class="method-description">
319
407
  <p>
320
408
  Deletes the saved PID file and, if the PID belongs to a process different
321
- from this script, sends a kill signal to the saved PID.
409
+ from this script, sends kill signals to the saved PID using <a
410
+ href="Pidify.html#M000011">pid_end</a>. Returns true if the process was
411
+ killed or false otherwise.
322
412
  </p>
323
413
  </div>
324
414
  </div>
@@ -10,7 +10,7 @@
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File pidify.rb, line 71</span>
13
+ <pre><span class="ruby-comment cmt"># File pidify.rb, line 77</span>
14
14
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">pid_directory</span>
15
15
  <span class="ruby-ivar">@pid_directory</span>
16
16
  <span class="ruby-keyword kw">end</span></pre>
@@ -10,7 +10,7 @@
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File pidify.rb, line 79</span>
13
+ <pre><span class="ruby-comment cmt"># File pidify.rb, line 85</span>
14
14
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">pid_directory=</span>(<span class="ruby-identifier">dir</span>)
15
15
  <span class="ruby-ivar">@pid_directory</span> = <span class="ruby-constant">Pathname</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">dir</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">dir</span>.<span class="ruby-identifier">kind_of?</span> <span class="ruby-constant">Pathname</span>
16
16
  <span class="ruby-ivar">@pid_directory</span> = <span class="ruby-identifier">dir</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">dir</span>.<span class="ruby-identifier">kind_of?</span> <span class="ruby-constant">Pathname</span>
@@ -10,9 +10,9 @@
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File pidify.rb, line 85</span>
13
+ <pre><span class="ruby-comment cmt"># File pidify.rb, line 91</span>
14
14
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">pid_file</span>
15
- <span class="ruby-ivar">@pid_directory</span> <span class="ruby-operator">+</span> (<span class="ruby-constant">Pathname</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">$0</span>).<span class="ruby-identifier">basename</span>.<span class="ruby-identifier">to_s</span><span class="ruby-operator">+</span><span class="ruby-value str">'.pid'</span>)
15
+ <span class="ruby-ivar">@pid_directory</span> <span class="ruby-operator">+</span> (<span class="ruby-constant">Pathname</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@file_name</span>).<span class="ruby-identifier">basename</span>.<span class="ruby-identifier">to_s</span><span class="ruby-operator">+</span><span class="ruby-value str">'.pid'</span>)
16
16
  <span class="ruby-keyword kw">end</span></pre>
17
17
  </body>
18
18
  </html>
@@ -5,13 +5,13 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>running? (Pidify)</title>
8
+ <title>pid_exists? (Pidify)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File pidify.rb, line 90</span>
14
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">running?</span>
13
+ <pre><span class="ruby-comment cmt"># File pidify.rb, line 96</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">pid_exists?</span>
15
15
  <span class="ruby-keyword kw">return</span> <span class="ruby-constant">FileTest</span>.<span class="ruby-identifier">exists?</span>(<span class="ruby-identifier">pid_file</span>)
16
16
  <span class="ruby-keyword kw">end</span></pre>
17
17
  </body>
@@ -5,16 +5,20 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>pid (Pidify)</title>
8
+ <title>running? (Pidify)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File pidify.rb, line 96</span>
14
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">pid</span>
15
- <span class="ruby-identifier">dpid</span> = <span class="ruby-keyword kw">nil</span>
16
- <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-identifier">pid_file</span>) { <span class="ruby-operator">|</span><span class="ruby-identifier">file</span><span class="ruby-operator">|</span> <span class="ruby-identifier">dpid</span> = <span class="ruby-identifier">file</span>.<span class="ruby-identifier">gets</span>.<span class="ruby-identifier">chomp</span> }
17
- <span class="ruby-identifier">dpid</span>.<span class="ruby-identifier">to_i</span>
13
+ <pre><span class="ruby-comment cmt"># File pidify.rb, line 101</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">running?</span>
15
+ <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">pid_exists?</span>
16
+ <span class="ruby-keyword kw">begin</span>
17
+ <span class="ruby-constant">Process</span><span class="ruby-operator">::</span><span class="ruby-identifier">kill</span> <span class="ruby-value">0</span>, <span class="ruby-identifier">pid</span>
18
+ <span class="ruby-keyword kw">true</span>
19
+ <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Errno</span><span class="ruby-operator">::</span><span class="ruby-constant">ESRCH</span>
20
+ <span class="ruby-keyword kw">false</span>
21
+ <span class="ruby-keyword kw">end</span>
18
22
  <span class="ruby-keyword kw">end</span></pre>
19
23
  </body>
20
24
  </html>
@@ -5,14 +5,22 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>save_pid (Pidify)</title>
8
+ <title>pid (Pidify)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File pidify.rb, line 103</span>
14
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">save_pid</span>
15
- <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-identifier">pid_file</span>, <span class="ruby-value str">'w'</span>) { <span class="ruby-operator">|</span><span class="ruby-identifier">file</span><span class="ruby-operator">|</span> <span class="ruby-identifier">file</span>.<span class="ruby-identifier">puts</span> <span class="ruby-identifier">$$</span> }
13
+ <pre><span class="ruby-comment cmt"># File pidify.rb, line 114</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">pid</span>
15
+ <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">pid_exists?</span>
16
+ <span class="ruby-identifier">dpid</span> = <span class="ruby-keyword kw">nil</span>
17
+ <span class="ruby-keyword kw">begin</span>
18
+ <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-identifier">pid_file</span>, <span class="ruby-constant">File</span><span class="ruby-operator">::</span><span class="ruby-constant">RDONLY</span>) { <span class="ruby-operator">|</span><span class="ruby-identifier">file</span><span class="ruby-operator">|</span> <span class="ruby-identifier">dpid</span> = <span class="ruby-identifier">file</span>.<span class="ruby-identifier">gets</span>.<span class="ruby-identifier">chomp</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">file</span>.<span class="ruby-identifier">flock</span>(<span class="ruby-constant">File</span><span class="ruby-operator">::</span><span class="ruby-constant">LOCK_SH</span><span class="ruby-operator">|</span><span class="ruby-constant">File</span><span class="ruby-operator">::</span><span class="ruby-constant">LOCK_NB</span>); <span class="ruby-identifier">file</span>.<span class="ruby-identifier">flock</span>(<span class="ruby-constant">File</span><span class="ruby-operator">::</span><span class="ruby-constant">LOCK_UN</span>) }
19
+ <span class="ruby-keyword kw">rescue</span>
20
+ <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
21
+ <span class="ruby-keyword kw">end</span>
22
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">dpid</span>.<span class="ruby-identifier">to_i</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">dpid</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">dpid</span>.<span class="ruby-identifier">to_i</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
23
+ <span class="ruby-keyword kw">nil</span>
16
24
  <span class="ruby-keyword kw">end</span></pre>
17
25
  </body>
18
26
  </html>
@@ -5,14 +5,20 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>delete_pid (Pidify)</title>
8
+ <title>save_pid (Pidify)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File pidify.rb, line 111</span>
14
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">delete_pid</span>
15
- <span class="ruby-constant">File</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">pid_file</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-constant">FileTest</span>.<span class="ruby-identifier">exists?</span> <span class="ruby-identifier">pid_file</span>
13
+ <pre><span class="ruby-comment cmt"># File pidify.rb, line 129</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">save_pid</span>
15
+ <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">pid_exists?</span>
16
+ <span class="ruby-keyword kw">begin</span>
17
+ <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-identifier">pid_file</span>, <span class="ruby-constant">File</span><span class="ruby-operator">::</span><span class="ruby-constant">CREAT</span><span class="ruby-operator">|</span><span class="ruby-constant">File</span><span class="ruby-operator">::</span><span class="ruby-constant">EXCL</span><span class="ruby-operator">|</span><span class="ruby-constant">File</span><span class="ruby-operator">::</span><span class="ruby-constant">WRONLY</span>) { <span class="ruby-operator">|</span><span class="ruby-identifier">file</span><span class="ruby-operator">|</span> <span class="ruby-identifier">file</span>.<span class="ruby-identifier">puts</span> <span class="ruby-identifier">$$</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">file</span>.<span class="ruby-identifier">flock</span>(<span class="ruby-constant">File</span><span class="ruby-operator">::</span><span class="ruby-constant">LOCK_EX</span>); <span class="ruby-identifier">file</span>.<span class="ruby-identifier">flock</span>(<span class="ruby-constant">File</span><span class="ruby-operator">::</span><span class="ruby-constant">LOCK_UN</span>) }
18
+ <span class="ruby-keyword kw">true</span>
19
+ <span class="ruby-keyword kw">rescue</span>
20
+ <span class="ruby-keyword kw">false</span>
21
+ <span class="ruby-keyword kw">end</span>
16
22
  <span class="ruby-keyword kw">end</span></pre>
17
23
  </body>
18
24
  </html>
@@ -5,15 +5,21 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>start (Pidify)</title>
8
+ <title>delete_pid (Pidify)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File pidify.rb, line 117</span>
14
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">start</span>
15
- <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Failed to start: already running (PID file exists).&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">running?</span>
16
- <span class="ruby-identifier">save_pid</span>
13
+ <pre><span class="ruby-comment cmt"># File pidify.rb, line 145</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">delete_pid</span>
15
+ <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">pid_exists?</span>
16
+ <span class="ruby-keyword kw">begin</span>
17
+ <span class="ruby-comment cmt"># FIXME: lock first?</span>
18
+ <span class="ruby-constant">File</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">pid_file</span>)
19
+ <span class="ruby-keyword kw">true</span>
20
+ <span class="ruby-keyword kw">rescue</span>
21
+ <span class="ruby-keyword kw">false</span>
22
+ <span class="ruby-keyword kw">end</span>
17
23
  <span class="ruby-keyword kw">end</span></pre>
18
24
  </body>
19
25
  </html>
@@ -5,27 +5,15 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>stop (Pidify)</title>
8
+ <title>start (Pidify)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File pidify.rb, line 124</span>
14
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">stop</span>(<span class="ruby-identifier">signal</span>=<span class="ruby-value str">'SIGINT'</span>)
15
- <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">running?</span>
16
- <span class="ruby-keyword kw">begin</span>
17
- <span class="ruby-identifier">pid</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">pid</span>
18
- <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">pid</span>
19
- <span class="ruby-constant">Process</span>.<span class="ruby-identifier">kill</span>(<span class="ruby-identifier">signal</span>, <span class="ruby-identifier">pid</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">pid</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">$$</span>
20
- <span class="ruby-identifier">delete_pid</span>
21
- <span class="ruby-keyword kw">else</span>
22
- <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Failed to stop: no PID found.&quot;</span>
23
- <span class="ruby-keyword kw">end</span>
24
- <span class="ruby-keyword kw">rescue</span>
25
- <span class="ruby-identifier">delete_pid</span>
26
- <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Failed to stop: process already stopped; deleted PID file.&quot;</span>
27
- <span class="ruby-keyword kw">end</span>
28
- <span class="ruby-keyword kw">end</span>
13
+ <pre><span class="ruby-comment cmt"># File pidify.rb, line 159</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">start</span>
15
+ <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Failed to start: already running (PID file exists).&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">pid_exists?</span>
16
+ <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">save_pid</span>
29
17
  <span class="ruby-keyword kw">end</span></pre>
30
18
  </body>
31
19
  </html>
@@ -0,0 +1,27 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>stop (Pidify)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File pidify.rb, line 167</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">stop</span>(<span class="ruby-identifier">signals</span>=<span class="ruby-node">%w(SIGTERM SIGQUIT SIGKILL)</span>, <span class="ruby-identifier">secs_between_signal</span>=<span class="ruby-value">4</span>)
15
+ <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">pid_exists?</span>
16
+ <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">running?</span>
17
+ <span class="ruby-identifier">delete_pid</span>
18
+ <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span>
19
+ <span class="ruby-keyword kw">end</span>
20
+ <span class="ruby-identifier">pid</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">pid</span>
21
+ <span class="ruby-identifier">killed</span> = <span class="ruby-keyword kw">true</span>
22
+ <span class="ruby-identifier">killed</span> = <span class="ruby-identifier">pid_end</span>(<span class="ruby-identifier">signals</span>, <span class="ruby-identifier">secs_between_signal</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">pid</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">$$</span>
23
+ <span class="ruby-identifier">delete_pid</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">killed</span> <span class="ruby-operator">==</span> <span class="ruby-keyword kw">true</span>
24
+ <span class="ruby-identifier">killed</span>
25
+ <span class="ruby-keyword kw">end</span></pre>
26
+ </body>
27
+ </html>
@@ -0,0 +1,32 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>pid_end (Pidify)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File pidify.rb, line 184</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">pid_end</span>(<span class="ruby-identifier">signals</span>=<span class="ruby-node">%w(SIGTERM SIGQUIT SIGKILL)</span>, <span class="ruby-identifier">secs_between_signal</span>=<span class="ruby-value">4</span>)
15
+ <span class="ruby-identifier">pid</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">pid</span>
16
+ <span class="ruby-identifier">signals</span> = [ <span class="ruby-identifier">signals</span> ].<span class="ruby-identifier">flatten</span>.<span class="ruby-identifier">map</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">sig</span><span class="ruby-operator">|</span> <span class="ruby-identifier">sig</span>.<span class="ruby-identifier">to_s</span>}
17
+ <span class="ruby-identifier">existed</span> = <span class="ruby-keyword kw">false</span>
18
+ <span class="ruby-identifier">signals</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">sig</span><span class="ruby-operator">|</span>
19
+ <span class="ruby-keyword kw">begin</span>
20
+ <span class="ruby-constant">Process</span>.<span class="ruby-identifier">kill</span>(<span class="ruby-identifier">sig</span>, <span class="ruby-identifier">pid</span>)
21
+ <span class="ruby-identifier">existed</span> = <span class="ruby-keyword kw">true</span>
22
+ <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Errno</span><span class="ruby-operator">::</span><span class="ruby-constant">ESRCH</span>
23
+ <span class="ruby-keyword kw">return</span> (<span class="ruby-identifier">existed</span> <span class="ruby-value">? </span><span class="ruby-keyword kw">true</span> <span class="ruby-operator">:</span> <span class="ruby-keyword kw">nil</span>)
24
+ <span class="ruby-keyword kw">end</span>
25
+ <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">running?</span>
26
+ <span class="ruby-identifier">sleep</span> <span class="ruby-identifier">secs_between_signal</span>
27
+ <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">running?</span>
28
+ <span class="ruby-keyword kw">end</span>
29
+ <span class="ruby-keyword kw">not</span> <span class="ruby-identifier">running?</span>
30
+ <span class="ruby-keyword kw">end</span></pre>
31
+ </body>
32
+ </html>
@@ -0,0 +1,20 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>start_as_daemon (Pidify)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File pidify.rb, line 204</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">start_as_daemon</span>
15
+ <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Failed to start: already running.&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">running?</span>
16
+ <span class="ruby-identifier">daemonize</span>
17
+ <span class="ruby-identifier">start</span>
18
+ <span class="ruby-keyword kw">end</span></pre>
19
+ </body>
20
+ </html>
@@ -0,0 +1,24 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>daemonize (Pidify)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File pidify.rb, line 213</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">daemonize</span>
15
+ <span class="ruby-identifier">fork</span> <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">exit</span>
16
+ <span class="ruby-constant">Process</span>.<span class="ruby-identifier">setsid</span>
17
+ <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">chdir</span> <span class="ruby-value str">'/'</span>
18
+ <span class="ruby-constant">File</span>.<span class="ruby-identifier">umask</span> <span class="ruby-value">0000</span>
19
+ <span class="ruby-constant">STDIN</span>.<span class="ruby-identifier">reopen</span> <span class="ruby-value str">&quot;/dev/null&quot;</span>
20
+ <span class="ruby-constant">STDOUT</span>.<span class="ruby-identifier">reopen</span> <span class="ruby-value str">&quot;/dev/null&quot;</span>, <span class="ruby-value str">&quot;a&quot;</span>
21
+ <span class="ruby-constant">STDERR</span>.<span class="ruby-identifier">reopen</span> <span class="ruby-constant">STDOUT</span>
22
+ <span class="ruby-keyword kw">end</span></pre>
23
+ </body>
24
+ </html>
@@ -1 +1 @@
1
- Mon Jan 09 11:53:33 EST 2006
1
+ Tue Nov 07 11:49:54 -0500 2006
@@ -56,7 +56,7 @@
56
56
  </tr>
57
57
  <tr class="top-aligned-row">
58
58
  <td><strong>Last Update:</strong></td>
59
- <td>Mon Jan 09 11:53:26 EST 2006</td>
59
+ <td>Tue Nov 07 11:42:34 -0500 2006</td>
60
60
  </tr>
61
61
  </table>
62
62
  </div>
@@ -86,6 +86,15 @@ PID files it creates and maintains.
86
86
  See <a href="../classes/Pidify.html">Pidify</a> for more information and
87
87
  examples.
88
88
  </p>
89
+ <h2>Website</h2>
90
+ <p>
91
+ Documentation: <a
92
+ href="http://pidify.rubyforge.org">pidify.rubyforge.org</a>/
93
+ </p>
94
+ <p>
95
+ Rubyforge page and Download: <a
96
+ href="http://rubyforge.org/projects/pidify">rubyforge.org/projects/pidify</a>/
97
+ </p>
89
98
  <h2>Requirements</h2>
90
99
  <ul>
91
100
  <li>Ruby 1.8
@@ -20,15 +20,19 @@
20
20
  <div id="index">
21
21
  <h1 class="section-bar">Methods</h1>
22
22
  <div id="index-entries">
23
- <a href="classes/Pidify.html#M000007">delete_pid (Pidify)</a><br />
24
- <a href="classes/Pidify.html#M000005">pid (Pidify)</a><br />
23
+ <a href="classes/Pidify.html#M000013">daemonize (Pidify)</a><br />
24
+ <a href="classes/Pidify.html#M000008">delete_pid (Pidify)</a><br />
25
+ <a href="classes/Pidify.html#M000006">pid (Pidify)</a><br />
25
26
  <a href="classes/Pidify.html#M000001">pid_directory (Pidify)</a><br />
26
27
  <a href="classes/Pidify.html#M000002">pid_directory= (Pidify)</a><br />
28
+ <a href="classes/Pidify.html#M000011">pid_end (Pidify)</a><br />
29
+ <a href="classes/Pidify.html#M000004">pid_exists? (Pidify)</a><br />
27
30
  <a href="classes/Pidify.html#M000003">pid_file (Pidify)</a><br />
28
- <a href="classes/Pidify.html#M000004">running? (Pidify)</a><br />
29
- <a href="classes/Pidify.html#M000006">save_pid (Pidify)</a><br />
30
- <a href="classes/Pidify.html#M000008">start (Pidify)</a><br />
31
- <a href="classes/Pidify.html#M000009">stop (Pidify)</a><br />
31
+ <a href="classes/Pidify.html#M000005">running? (Pidify)</a><br />
32
+ <a href="classes/Pidify.html#M000007">save_pid (Pidify)</a><br />
33
+ <a href="classes/Pidify.html#M000009">start (Pidify)</a><br />
34
+ <a href="classes/Pidify.html#M000012">start_as_daemon (Pidify)</a><br />
35
+ <a href="classes/Pidify.html#M000010">stop (Pidify)</a><br />
32
36
  </div>
33
37
  </div>
34
38
  </body>
@@ -12,6 +12,14 @@
12
12
  # files it creates and maintains.
13
13
  #
14
14
  # See Pidify for more information and examples.
15
+ #
16
+ # == Website
17
+ #
18
+ # Documentation:
19
+ # http://pidify.rubyforge.org/
20
+ #
21
+ # Rubyforge page and Download:
22
+ # http://rubyforge.org/projects/pidify/
15
23
  #
16
24
  # == Requirements
17
25
  #
@@ -40,14 +48,11 @@
40
48
  #
41
49
  # A more useful example:
42
50
  # require 'pidify'
43
- # require 'daemons'
44
51
  # Signal.trap('INT') { Pidify.stop; exit }
45
52
  # module Doer
46
53
  # def self.start
47
54
  # puts "starting"
48
- # raise "Failed to start: already running." if Pidify.running?
49
- # Daemons.daemonize
50
- # Pidify.start
55
+ # Pidify.start_as_daemon
51
56
  # loop do
52
57
  # puts "hello world"
53
58
  # sleep 1
@@ -193,5 +198,26 @@ module Pidify
193
198
  end
194
199
  not running?
195
200
  end
201
+
202
+ # Like Pidify.start, but first calls Pidify.daemonize. Will fail and raise
203
+ # an exception if Pidify.running? returns true.
204
+ def start_as_daemon
205
+ raise "Failed to start: already running." if running?
206
+ daemonize
207
+ start
208
+ end
209
+
210
+ # Daemonizes this process. Does not automatically use a PID file. If you
211
+ # want to use a PID file, you must call Pidify.start after the call to
212
+ # daemonize or use Pidify.start_as_daemon.
213
+ def daemonize
214
+ fork and exit
215
+ Process.setsid
216
+ Dir.chdir '/'
217
+ File.umask 0000
218
+ STDIN.reopen "/dev/null"
219
+ STDOUT.reopen "/dev/null", "a"
220
+ STDERR.reopen STDOUT
221
+ end
196
222
  end
197
223
  end
metadata CHANGED
@@ -3,13 +3,13 @@ rubygems_version: 0.8.11
3
3
  specification_version: 1
4
4
  name: pidify
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.1.2
7
- date: 2006-11-06 00:00:00 -05:00
8
- summary: This allows a script to check if there is currently another running instance of itself, and give it the ability to kill that instance based on PID.
6
+ version: "0.2"
7
+ date: 2006-11-07 00:00:00 -05:00
8
+ summary: This allows a script to check if there is currently another running instance of itself (like a daemon), and give it the ability to kill that instance based on PID.
9
9
  require_paths:
10
10
  - lib
11
11
  email: payton@foolord.com
12
- homepage: http://foolord.com/
12
+ homepage: http://pidify.rubyforge.org/
13
13
  rubyforge_project:
14
14
  description:
15
15
  autorequire:
@@ -33,13 +33,14 @@ files:
33
33
  - doc/classes
34
34
  - doc/fr_file_index.html
35
35
  - doc/fr_method_index.html
36
- - doc/rdoc-style.css
37
36
  - doc/created.rid
38
- - doc/index.html
39
37
  - doc/fr_class_index.html
38
+ - doc/index.html
39
+ - doc/rdoc-style.css
40
40
  - doc/files/pidify_rb.html
41
41
  - doc/classes/Pidify.src
42
42
  - doc/classes/Pidify.html
43
+ - doc/classes/Pidify.src/M000010.html
43
44
  - doc/classes/Pidify.src/M000001.html
44
45
  - doc/classes/Pidify.src/M000002.html
45
46
  - doc/classes/Pidify.src/M000003.html
@@ -49,6 +50,9 @@ files:
49
50
  - doc/classes/Pidify.src/M000007.html
50
51
  - doc/classes/Pidify.src/M000008.html
51
52
  - doc/classes/Pidify.src/M000009.html
53
+ - doc/classes/Pidify.src/M000011.html
54
+ - doc/classes/Pidify.src/M000012.html
55
+ - doc/classes/Pidify.src/M000013.html
52
56
  test_files: []
53
57
 
54
58
  rdoc_options: []