mlanett-daemons 1.0.13 → 1.1.10.2
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +12 -2
- data/LICENSE +1 -8
- data/README-mlanett.rdoc +8 -0
- data/{README → README.rdoc} +6 -15
- data/Releases +84 -9
- data/TODO +1 -5
- data/daemons.gemspec +1 -0
- data/examples/call/call.rb +1 -0
- data/examples/daemonize/daemonize.rb +10 -3
- data/examples/run/ctrl_hanging.rb +19 -0
- data/examples/run/ctrl_monitor_multiple.rb +18 -0
- data/examples/run/ctrl_normal.rb +0 -1
- data/examples/run/ctrl_proc.rb.output +20 -0
- data/examples/run/ctrl_proc_rand.rb +23 -0
- data/examples/run/ctrl_slowstop.rb +16 -0
- data/examples/run/myserver_crashing.rb +2 -2
- data/examples/run/myserver_hanging.rb +21 -0
- data/examples/run/myserver_slowstop.rb +21 -0
- data/lib/daemons.rb +38 -10
- data/lib/daemons/application.rb +131 -26
- data/lib/daemons/application_group.rb +58 -10
- data/lib/daemons/change_privilege.rb +19 -0
- data/lib/daemons/cmdline.rb +10 -6
- data/lib/daemons/controller.rb +5 -2
- data/lib/daemons/daemonize.rb +64 -150
- data/lib/daemons/etc_extension.rb +12 -0
- data/lib/daemons/exceptions.rb +3 -0
- data/lib/daemons/monitor.rb +27 -19
- data/lib/daemons/pid.rb +13 -14
- data/lib/daemons/pidfile.rb +14 -7
- data/lib/daemons/pidmem.rb +9 -0
- data/lib/daemons/version.rb +1 -1
- data/spec/pidfile_spec.rb +12 -0
- data/spec/spec_helper.rb +1 -0
- metadata +31 -47
- data/daemons.tmproj +0 -56
- data/examples/run/myserver_crashing.rb.output +0 -30
- data/html/classes/Daemonize.html +0 -497
- data/html/classes/Daemons.html +0 -683
- data/html/classes/Daemons/Application.html +0 -836
- data/html/classes/Daemons/ApplicationGroup.html +0 -508
- data/html/classes/Daemons/CmdException.html +0 -113
- data/html/classes/Daemons/Controller.html +0 -429
- data/html/classes/Daemons/Error.html +0 -113
- data/html/classes/Daemons/Exception.html +0 -111
- data/html/classes/Daemons/Monitor.html +0 -263
- data/html/classes/Daemons/Optparse.html +0 -244
- data/html/classes/Daemons/Pid.html +0 -339
- data/html/classes/Daemons/PidFile.html +0 -441
- data/html/classes/Daemons/PidMem.html +0 -126
- data/html/classes/Daemons/RuntimeException.html +0 -113
- data/html/classes/Daemons/SystemError.html +0 -163
- data/html/created.rid +0 -1
- data/html/files/README.html +0 -377
- data/html/files/Releases.html +0 -342
- data/html/files/TODO.html +0 -121
- data/html/files/lib/daemons/application_group_rb.html +0 -101
- data/html/files/lib/daemons/application_rb.html +0 -110
- data/html/files/lib/daemons/cmdline_rb.html +0 -101
- data/html/files/lib/daemons/controller_rb.html +0 -101
- data/html/files/lib/daemons/daemonize_rb.html +0 -207
- data/html/files/lib/daemons/exceptions_rb.html +0 -101
- data/html/files/lib/daemons/monitor_rb.html +0 -108
- data/html/files/lib/daemons/pid_rb.html +0 -108
- data/html/files/lib/daemons/pidfile_rb.html +0 -108
- data/html/files/lib/daemons/pidmem_rb.html +0 -108
- data/html/files/lib/daemons_rb.html +0 -117
- data/html/fr_class_index.html +0 -41
- data/html/fr_file_index.html +0 -40
- data/html/fr_method_index.html +0 -91
- data/html/index.html +0 -24
- data/html/rdoc-style.css +0 -208
- data/test/call_as_daemon.rb +0 -12
- data/test/tc_main.rb +0 -24
- data/test/test1.rb +0 -19
- data/test/testapp.rb +0 -11
data/Gemfile.lock
CHANGED
@@ -1,17 +1,27 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
daemons (1.
|
4
|
+
mlanett-daemons (1.1.10.1)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
8
8
|
specs:
|
9
|
+
diff-lcs (1.2.4)
|
9
10
|
rake (10.1.0)
|
11
|
+
rspec (2.14.1)
|
12
|
+
rspec-core (~> 2.14.0)
|
13
|
+
rspec-expectations (~> 2.14.0)
|
14
|
+
rspec-mocks (~> 2.14.0)
|
15
|
+
rspec-core (2.14.5)
|
16
|
+
rspec-expectations (2.14.3)
|
17
|
+
diff-lcs (>= 1.1.3, < 2.0)
|
18
|
+
rspec-mocks (2.14.3)
|
10
19
|
|
11
20
|
PLATFORMS
|
12
21
|
ruby
|
13
22
|
|
14
23
|
DEPENDENCIES
|
15
24
|
bundler (>= 1.0)
|
16
|
-
daemons!
|
25
|
+
mlanett-daemons!
|
17
26
|
rake
|
27
|
+
rspec
|
data/LICENSE
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
Copyright (c) 2005-
|
1
|
+
Copyright (c) 2005-2012 Thomas Uehlinger
|
2
2
|
|
3
3
|
Permission is hereby granted, free of charge, to any person
|
4
4
|
obtaining a copy of this software and associated documentation
|
@@ -20,10 +20,3 @@ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
20
20
|
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
21
21
|
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
22
22
|
OTHER DEALINGS IN THE SOFTWARE.
|
23
|
-
|
24
|
-
This license does not apply to daemonize.rb, which is was written by
|
25
|
-
Travis Whitton und published under the following license:
|
26
|
-
|
27
|
-
The Daemonize extension module is copywrited free software by Travis Whitton
|
28
|
-
<whitton@atlantic.net>. You can redistribute it under the terms specified in
|
29
|
-
the COPYING file of the Ruby distribution.
|
data/README-mlanett.rdoc
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
== What is Daemons?
|
2
|
+
|
3
|
+
This is a fork of the original svn upstream by Thomas Uehlinger.
|
4
|
+
|
5
|
+
It incorporates some bug fixes from myself and some other git repos,
|
6
|
+
which are forked from an older version of the upstream.
|
7
|
+
|
8
|
+
This gem is pushed to rubygems as mlanett-daemons.
|
data/{README → README.rdoc}
RENAMED
@@ -1,4 +1,4 @@
|
|
1
|
-
= Daemons Version 1.
|
1
|
+
= Daemons Version 1.1.10
|
2
2
|
|
3
3
|
(See Releases for release-specific information)
|
4
4
|
|
@@ -14,12 +14,9 @@ Besides this basic functionality, daemons offers many advanced features like <i>
|
|
14
14
|
and logging (in case your ruby script crashes) and <i>monitoring</i> and automatic restarting of your processes
|
15
15
|
if they crash.
|
16
16
|
|
17
|
-
Daemons includes the <tt>daemonize.rb</tt> script written by <i>Travis Whitton</i> to do the daemonization
|
18
|
-
process.
|
19
|
-
|
20
17
|
== Basic Usage
|
21
18
|
|
22
|
-
You can use Daemons in four
|
19
|
+
You can use Daemons in four different ways:
|
23
20
|
|
24
21
|
=== 1. Create wrapper scripts for your server scripts or applications
|
25
22
|
|
@@ -184,11 +181,12 @@ The RDoc documentation is also online at http://daemons.rubyforge.org
|
|
184
181
|
|
185
182
|
== Author
|
186
183
|
|
187
|
-
Written
|
184
|
+
Written 2005-2013 by Thomas Uehlinger <mailto:th.uehlinger@gmx.ch>.
|
185
|
+
Anonymous SVN checkout is available with "svn checkout http://daemons.rubyforge.org/svn/".
|
188
186
|
|
189
187
|
== License
|
190
188
|
|
191
|
-
Copyright (c) 2005-
|
189
|
+
Copyright (c) 2005-2013 Thomas Uehlinger
|
192
190
|
|
193
191
|
Permission is hereby granted, free of charge, to any person
|
194
192
|
obtaining a copy of this software and associated documentation
|
@@ -211,13 +209,6 @@ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
211
209
|
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
212
210
|
OTHER DEALINGS IN THE SOFTWARE.
|
213
211
|
|
214
|
-
This license does not apply to daemonize.rb, which is was written by
|
215
|
-
Travis Whitton und published under the following license:
|
216
|
-
|
217
|
-
The Daemonize extension module is copywrited free software by Travis Whitton
|
218
|
-
<whitton@atlantic.net>. You can redistribute it under the terms specified in
|
219
|
-
the COPYING file of the Ruby distribution.
|
220
|
-
|
221
212
|
== Feedback and other resources
|
222
213
|
|
223
|
-
At http://rubyforge.org/projects/daemons.
|
214
|
+
At http://rubyforge.org/projects/daemons .
|
data/Releases
CHANGED
@@ -1,26 +1,100 @@
|
|
1
1
|
= Daemons Release History
|
2
2
|
|
3
|
-
== Release 1.
|
3
|
+
== Release 1.1.10: June 26, 2013
|
4
|
+
|
5
|
+
* fix Pid.running? rescuing timeout exceptions (thanks to Geraud Boyer)
|
6
|
+
* monitor.rb/application.rb/application_group.rb: handle :monitor and :multiple in combination correctly
|
7
|
+
(thanks to Prakash Murthy).
|
8
|
+
|
9
|
+
== Release 1.1.9: August 10, 2012
|
10
|
+
|
11
|
+
* daemonize.rb: do srand in the forked child process both in daemonize and call_as_daemon
|
12
|
+
(thanks to Andrew Havens).
|
13
|
+
|
14
|
+
== Release 1.1.8: February 7, 2012
|
15
|
+
|
16
|
+
* rename to daemonization.rb to daemonize.rb (and Daemonization to Daemonize) to
|
17
|
+
ensure compatibility.
|
18
|
+
|
19
|
+
== Release 1.1.7: February 6, 2012
|
20
|
+
|
21
|
+
* start_proc: Write out the PID file in the newly created proc to avoid race conditions.
|
22
|
+
* daemonize.rb: remove to simplify licensing (replaced by daemonization.rb).
|
23
|
+
|
24
|
+
== Release 1.1.6: January 18, 2012
|
25
|
+
|
26
|
+
* Add the :app_name option for the "call" daemonization mode.
|
27
|
+
|
28
|
+
== Release 1.1.5: December 19, 2011
|
29
|
+
|
30
|
+
* Catch the case where the pidfile is empty but not deleted
|
31
|
+
and restart the app (thanks to Rich Healey)
|
32
|
+
|
33
|
+
== Release 1.1.4: June 17, 2011
|
34
|
+
|
35
|
+
* Do not change the umask to 0000 when daemonizing anymore, just leave it as it
|
36
|
+
was (thanks to Jon Botelho).
|
37
|
+
|
38
|
+
== Release 1.1.3: April 14, 2011
|
39
|
+
|
40
|
+
* Fixed a bug in Application.stop: the cached pid number needs to
|
41
|
+
be used to check for the status of a killed process (thanks to Jimmy Sieben).
|
42
|
+
|
43
|
+
== Release 1.1.2: March 29, 2011
|
44
|
+
|
45
|
+
* Fixed gemspec to include all needed files.
|
46
|
+
|
47
|
+
== Release 1.1.1: March 29, 2011
|
48
|
+
|
49
|
+
* Make the logging facilities work in :mode => :none (i.e. when calling
|
50
|
+
Daemons.daemonize) (thanks to the input from Peter Hegedus).
|
51
|
+
|
52
|
+
== Release 1.1.0: June 20, 2010
|
53
|
+
|
54
|
+
* Honour the options[:app_name] in Daemons.daemonize (thanks to Ryan Tecco).
|
55
|
+
* Included a new option :stop_proc to specify a proc that will be called when a
|
56
|
+
daemonized process receives a request to stop (thanks to Dave Dupre).
|
57
|
+
* Only delete the pidfile if the current pid is the original pid (ghazel).
|
58
|
+
* Start when restart but no application running (pcreux).
|
59
|
+
* Silently continue if there is no pidfile (ghazel).
|
60
|
+
* We now per default wait for processes to stop and
|
61
|
+
kill them automatically it if they do not stop within a given time
|
62
|
+
(force_kill_waittime). Use the option --no_wait to not wait for processes to
|
63
|
+
stop.
|
64
|
+
* Set log files mode to 0644 (mikehale).
|
65
|
+
* Set pid file permissions to 0644 (mikehale).
|
66
|
+
* Added ability to change process uid/gid (mikehale).
|
67
|
+
* Fix for: If you happen to start a daemon from a process that has open file
|
68
|
+
descriptors these will stay open. As it is daemonize.rb only closes ruby IO
|
69
|
+
objects (thanks to Han Holl).
|
70
|
+
* New reload command (SIGHUP) (thanks to Michael Schuerig).
|
71
|
+
|
72
|
+
== Release 1.0.10: March 21, 2008
|
4
73
|
|
5
74
|
* By default, we now delete stray pid-files (i.e. pid-files which result for
|
6
|
-
example from a killed daemon) automatically. This function can be deactivated
|
7
|
-
passing :keep_pid_files => true as an option.
|
8
|
-
* All pid files of :multiple daemons new get deleted correctly upon exit of the
|
75
|
+
example from a killed daemon) automatically. This function can be deactivated
|
76
|
+
by passing :keep_pid_files => true as an option.
|
77
|
+
* All pid files of :multiple daemons new get deleted correctly upon exit of the
|
78
|
+
daemons (reported by Han Holl).
|
9
79
|
* Use the signal 'KILL' instead of 'TERM' on Windows platforms.
|
10
|
-
* Use exit! in trap('TERM') instead of exit when option :hard_exit is given
|
80
|
+
* Use exit! in trap('TERM') instead of exit when option :hard_exit is given
|
81
|
+
(thanks to Han Holl).
|
11
82
|
* Did some clarification on the exception log.
|
12
83
|
|
13
84
|
== Release 1.0.9: October 29, 2007
|
14
85
|
|
15
|
-
* fixed a severe bug in the new Pid.running? function: function returned true if
|
86
|
+
* fixed a severe bug in the new Pid.running? function: function returned true if
|
87
|
+
the process did not exist (thanks to Jeremy Lawler).
|
16
88
|
|
17
89
|
== Release 1.0.8: September 24, 2007
|
18
90
|
|
19
|
-
* new Pid.running? function. Checking whether a process exists by sending
|
91
|
+
* new Pid.running? function. Checking whether a process exists by sending
|
92
|
+
signal '0' (thanks to Dru Nelson).
|
20
93
|
|
21
94
|
== Release 1.0.7: July 7, 2007
|
22
95
|
|
23
|
-
* Patch to fix wrong ARGV when using :exec (in def start_exec:
|
96
|
+
* Patch to fix wrong ARGV when using :exec (in def start_exec:
|
97
|
+
Kernel.exec(script(), *(@app_argv || []))) (thanks to Alex McGuire).
|
24
98
|
|
25
99
|
== Release 1.0.6: Mai 8, 2007
|
26
100
|
|
@@ -37,7 +111,8 @@
|
|
37
111
|
|
38
112
|
* Document the :log_output option (thanks to Andrew Kuklewicz).
|
39
113
|
* Set STDOUT.sync = true when redirecting to a logfile (thanks to Andrew Kuklewicz).
|
40
|
-
* Should now run also correctly when there is no working 'ps ax' on the system
|
114
|
+
* Should now run also correctly when there is no working 'ps ax' on the system
|
115
|
+
(thanks to Daniel Kehoe).
|
41
116
|
|
42
117
|
== Release 1.0.3: November 1, 2006
|
43
118
|
|
data/TODO
CHANGED
@@ -1,6 +1,2 @@
|
|
1
|
-
*
|
2
|
-
* write some real tests (2005-02-08)
|
3
|
-
* document the new options (2005-03-14) *DONE*
|
4
|
-
* start/stop with --force options (2005-04-05)
|
5
|
-
* option to give some console output on start/stop commands (2005-04-05)
|
1
|
+
* put TODOS here
|
6
2
|
|
data/daemons.gemspec
CHANGED
data/examples/call/call.rb
CHANGED
@@ -11,10 +11,17 @@ end
|
|
11
11
|
require 'daemons'
|
12
12
|
|
13
13
|
|
14
|
-
|
14
|
+
options = {
|
15
|
+
:log_output => true
|
16
|
+
}
|
15
17
|
|
16
|
-
|
18
|
+
|
19
|
+
testfile = File.expand_path(__FILE__) + '.txt'
|
20
|
+
|
21
|
+
Daemons.daemonize(options)
|
22
|
+
|
23
|
+
puts "some output..."
|
17
24
|
|
18
25
|
File.open(testfile, 'w') {|f|
|
19
26
|
f.write("test")
|
20
|
-
}
|
27
|
+
}
|
@@ -0,0 +1,19 @@
|
|
1
|
+
lib_dir = File.expand_path(File.join(File.dirname(__FILE__), '../../lib'))
|
2
|
+
|
3
|
+
if File.exist?(File.join(lib_dir, 'daemons.rb'))
|
4
|
+
$LOAD_PATH.unshift lib_dir
|
5
|
+
else
|
6
|
+
begin; require 'rubygems'; rescue ::Exception; end
|
7
|
+
end
|
8
|
+
|
9
|
+
require 'daemons'
|
10
|
+
|
11
|
+
options = {
|
12
|
+
#:mode => :exec,
|
13
|
+
:multiple => true,
|
14
|
+
:no_pidfiles => true,
|
15
|
+
:force_kill_waittime => 5
|
16
|
+
#:force_kill_waittime => -1 # do not wait before killing -9
|
17
|
+
}
|
18
|
+
|
19
|
+
Daemons.run(File.join(File.dirname(__FILE__), 'myserver_hanging.rb'), options)
|
@@ -0,0 +1,18 @@
|
|
1
|
+
lib_dir = File.expand_path(File.join(File.dirname(__FILE__), '../../lib'))
|
2
|
+
|
3
|
+
if File.exist?(File.join(lib_dir, 'daemons.rb'))
|
4
|
+
$LOAD_PATH.unshift lib_dir
|
5
|
+
else
|
6
|
+
begin; require 'rubygems'; rescue ::Exception; end
|
7
|
+
end
|
8
|
+
|
9
|
+
require 'daemons'
|
10
|
+
|
11
|
+
|
12
|
+
options = {
|
13
|
+
:multiple => true,
|
14
|
+
:monitor => true,
|
15
|
+
:log_output => true,
|
16
|
+
}
|
17
|
+
|
18
|
+
Daemons.run(File.join(File.dirname(__FILE__), 'myserver_crashing.rb'), options)
|
data/examples/run/ctrl_normal.rb
CHANGED
@@ -99,3 +99,23 @@ ping from proc!
|
|
99
99
|
ping from proc!
|
100
100
|
ping from proc!
|
101
101
|
ping from proc!
|
102
|
+
ping from proc!
|
103
|
+
ping from proc!
|
104
|
+
ping from proc!
|
105
|
+
ping from proc!
|
106
|
+
ping from proc!
|
107
|
+
ping from proc!
|
108
|
+
ping from proc!
|
109
|
+
ctrl_proc.rb: process with pid 3187 started.
|
110
|
+
ping from proc!
|
111
|
+
ping from proc!
|
112
|
+
ping from proc!
|
113
|
+
ctrl_proc.rb: process with pid 1659 started.
|
114
|
+
ping from proc!
|
115
|
+
ping from proc!
|
116
|
+
ctrl_proc.rb: process with pid 17561 started.
|
117
|
+
ping from proc!
|
118
|
+
ping from proc!
|
119
|
+
ctrl_proc.rb: process with pid 18362 started.
|
120
|
+
ping from proc!
|
121
|
+
ping from proc!
|
@@ -0,0 +1,23 @@
|
|
1
|
+
lib_dir = File.expand_path(File.join(File.dirname(__FILE__), '../../lib'))
|
2
|
+
|
3
|
+
if File.exist?(File.join(lib_dir, 'daemons.rb'))
|
4
|
+
$LOAD_PATH.unshift lib_dir
|
5
|
+
else
|
6
|
+
begin; require 'rubygems'; rescue ::Exception; end
|
7
|
+
end
|
8
|
+
|
9
|
+
|
10
|
+
require 'daemons'
|
11
|
+
|
12
|
+
|
13
|
+
Daemons.run_proc('myscript') do
|
14
|
+
loop do
|
15
|
+
file = File.open('/tmp/myscript.log', 'a')
|
16
|
+
file.write(Random.rand) # breaks without seeding
|
17
|
+
# file.write(Random.new.rand) # works without seeding
|
18
|
+
# file.write(rand) # also works, but this is Kernel.rand() so its different
|
19
|
+
file.write("\n")
|
20
|
+
file.close()
|
21
|
+
sleep 2
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
lib_dir = File.expand_path(File.join(File.dirname(__FILE__), '../../lib'))
|
2
|
+
|
3
|
+
if File.exist?(File.join(lib_dir, 'daemons.rb'))
|
4
|
+
$LOAD_PATH.unshift lib_dir
|
5
|
+
else
|
6
|
+
begin; require 'rubygems'; rescue ::Exception; end
|
7
|
+
end
|
8
|
+
|
9
|
+
require 'daemons'
|
10
|
+
|
11
|
+
options = {
|
12
|
+
#:force_kill_waittime => 40
|
13
|
+
#:force_kill_waittime => -1 # do not wait before killing -9
|
14
|
+
}
|
15
|
+
|
16
|
+
Daemons.run(File.join(File.dirname(__FILE__), 'myserver_slowstop.rb'), options)
|
@@ -0,0 +1,21 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
|
4
|
+
# This is myserver.rb, an example server that is to be controlled by daemons
|
5
|
+
# and that does nothing really useful at the moment.
|
6
|
+
#
|
7
|
+
# Don't run this script by yourself, it can be controlled by the ctrl*.rb scripts.
|
8
|
+
|
9
|
+
trap('TERM') {
|
10
|
+
puts "received TERM"
|
11
|
+
|
12
|
+
loop do
|
13
|
+
puts 'hanging!'
|
14
|
+
sleep(3)
|
15
|
+
end
|
16
|
+
}
|
17
|
+
|
18
|
+
loop do
|
19
|
+
puts 'ping from myserver.rb!'
|
20
|
+
sleep(3)
|
21
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
|
4
|
+
# This is myserver_slowstop.rb, an example server that is to be controlled by daemons
|
5
|
+
# and that does nothing really useful at the moment.
|
6
|
+
#
|
7
|
+
# Don't run this script by yourself, it can be controlled by the ctrl*.rb scripts.
|
8
|
+
|
9
|
+
trap('TERM') {
|
10
|
+
puts "received TERM"
|
11
|
+
|
12
|
+
# simulate the slow stopping
|
13
|
+
sleep(10)
|
14
|
+
|
15
|
+
exit
|
16
|
+
}
|
17
|
+
|
18
|
+
loop do
|
19
|
+
puts 'ping from myserver.rb!'
|
20
|
+
sleep(3)
|
21
|
+
end
|